我想要下面的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); });
这也将允许您有一些错误处理,并更好地针对问题发生的目标.