我想要下面的gulp调用同步运行,一个接一个.但他们不遵循命令.
run-sequence节点模块在这里没有帮助,因为我没有尝试串行运行gulp任务(即它的语法类似于gulp.task(“mytask”,[“foo”,“bar”,“baz”]等等),而是如下所示串联“打电话”.
gulp.task("dostuff",function (callback) {
gulp
.src("...")
.pipe(gulp.dest("...");
gulp
.src("...")
.pipe(gulp.dest("...");
gulp
.src("...")
.pipe(gulp.dest("...");
callback();
});
如何使他们一个接一个地运行?
解决方法
您可以使用
async作为您的呼叫的控制流程,让他们只有一个任务,也避免您获得“金字塔效应”.所以这样的东西应该对你的用例很好:
var async = require('async');
gulp.task('yeah',function (cb) {
async.series([
function (next) {
gulp.src('...')
.pipe(gulp.dest('...')
.on('end',next);
},function (next) {
gulp.src('...')
.pipe(gulp.dest('...')
.on('end',next);
}
],cb);
});
这也将允许您有一些错误处理,并更好地针对问题发生的目标.