如何强制gulp调用同步运行?

h b*_*bob 13 javascript node.js gulp

我希望下面的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();
});
Run Code Online (Sandbox Code Playgroud)

如何让它们一个接一个地运行?

Bal*_*zar 8

您可以使用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);
    },
    function (next) {
      gulp.src('...')
        .pipe(gulp.dest('...')
        .on('end', next);
    }
  ], cb);
});
Run Code Online (Sandbox Code Playgroud)

这也将允许您进行一些错误处理,并在出现问题时更好地定位.