我是gulp的新手,并且一直在查看示例设置。 有些人有以下结构:
gulp.task("XXXX", function() {
gulp.src("....
其他人有这个:
gulp.task("XXXX", function() {
return gulp.src("....
我想知道src上的返回有什么不同?
答案 0 :(得分:156)
您return
表示该任务是异步的。 gulp.src()
返回一个流,因此它是异步的。
没有它,任务系统就不会知道它何时完成。阅读docs。
答案 1 :(得分:36)
如果您有依赖任务,则需要返回流,以便在运行自己之前等待其相关任务完成。
<强>例如强>
// 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 在 task2 运行之前完成(例如编译coffeescript或其他)...但除非我们添加 return < / strong> - 如下例所示 - 然后它们将同步运行而不是异步运行;并且编译的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
答案 2 :(得分:26)
如果每个任务有多个流,我发现这很有用。您需要组合/合并多个流并返回它们。
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']);