一尘不染

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

node.js

我希望下面的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();
});

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


阅读 238

收藏
2020-07-07

共1个答案

一尘不染

您可以将 异步
用作呼叫的控制流,以仅使它们完成一个任务,也避免了获得“金字塔效应”。因此,这样的事情对于您的用例应该是好的:

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);
});

这还将使您能够进行一些错误处理,并更好地定位发生问题的位置。

2020-07-07