我希望下面的gulp调用一个接一个地同步运行。但是他们不服从命令。
在运行序列节点模块没有帮助在这里,因为我并不想串联运行一饮而尽任务(即它的语法类似于gulp.task("mytask", ["foo", "bar", "baz"]等等),而是吞掉串联“来电”,你见下文。
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(); });
如何使它们一个接一个地运行?
您可以将 异步 用作呼叫的控制流,以仅使它们完成一个任务,也避免了获得“金字塔效应”。因此,这样的事情对于您的用例应该是好的:
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); }, function (next) { gulp.src('...') .pipe(gulp.dest('...') .on('end', next); } ], cb); });
这还将使您能够进行一些错误处理,并更好地定位发生问题的位置。