Gulp.js任务,在src上返回?

我是新来的吞咽,并已通过示例设置。 有些人有以下结构:

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

其他人有这样的:

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

我想知道src的回报有多大的差异?

return以表明该任务是asynchronous的。 gulp.src()返回一个stream,所以它是asynchronous的。

没有它,任务系统就不知道什么时候完成。 阅读文档 。

如果你有依赖的任务,你需要返回的任务stream等待其依赖的任务完成之前,运行自己。

例如

 // 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')); }); 

在这个例子中,你会希望task1在任务运行之前完成(比如编译coffeescript或者其它),但是除非我们添加return – 就像下面的例子 – 然后它们将同步运行而不是asynchronous运行。 并且编译后的coffeescript不会被缩小,因为task2不会等待任务1完成,所以不会在task1的编译后的输出中拾取。 所以在这种情况下我们应该总是回来。

 // 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')); }); 

编辑:这个配方进一步解释。 https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md

我发现这有帮助,如果你有多个stream每个任务。 您需要组合/合并多个stream并将其返回。

 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任务定义结构的替代scheme将是:

 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']);