Gulp.js 任务,返回 src?

我是个新手,一直在研究示例设置。 有些人的结构如下:

gulp.task("XXXX", function() {
gulp.src("....

其他人有这个:

gulp.task("XXXX", function() {
return gulp.src("....

我想知道在 src 上的 返回有什么不同? ?

31835 次浏览

return表示任务是异步的。 gulp.src()返回一个流,因此它是异步的。

没有它,任务系统不会知道它什么时候结束。

如果每个任务有多个流,我发现这很有帮助。您需要组合/合并多个流并返回它们。

var gulp = require('gulp');
var merge = require('gulp-merge');


gulp.task('test', function() {
var bootstrap = gulp.src('bootstrap/js/*.js')
.pipe(gulp.dest('public/bootstrap'));


var jquery = gulp.src('jquery.cookie/jquery.cookie.js')
.pipe(gulp.dest('public/jquery'));


return merge(bootstrap, jquery);
});

采用 Gulps 任务定义结构的替代方案是:

var gulp = require('gulp');


gulp.task('bootstrap', function() {
return gulp.src('bootstrap/js/*.js')
.pipe(gulp.dest('public/bootstrap'));
});


gulp.task('jquery', function() {
return gulp.src('jquery.cookie/jquery.cookie.js')
.pipe(gulp.dest('public/jquery'));
});


gulp.task('test', ['bootstrap', 'jquery']);

如果有依赖任务,则需要 返回流,以便任务等待其依赖任务完成后再运行自身。

例句

// without return
gulp.task('task1', function() {
gulp.src('src/coffee/*.coffee')
/* eg compile coffeescript here */
.pipe(gulp.dest('src'));
});


gulp.task('task2', ['task1'], function() {
gulp.src('src/*.js')
/* eg minfify js here */
.pipe(gulp.dest('dest'));
});

在这个例子中,你期望 任务1任务2运行之前完成(例如编译咖啡脚本或其他) ... 但是除非我们添加 返回——就像下面的例子一样——那么它们将同步运行而不是异步运行; 而且编译好的咖啡脚本不会被缩小,因为 任务2不会等待任务1完成,所以不会接收到 任务1的编译输出。所以我们应该在这种情况下回来。

// with return
gulp.task('task1', function() {
return gulp.src('**/*.coffee')
/* your operations here */
.pipe(gulp.dest('dest'));
});


gulp.task('task2', ['task1'], function() {
return gulp.src('**/*.js')
/* your operations here */
.pipe(gulp.dest('dest'));
});

编辑: 这里的食谱进一步解释了它。 < a href = “ https://github.com/gulpjs/gulp/blob/master/docs/Recips/running-asks-in-Series es.md”rel = “ norefrer”> https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md