如何让 gulp.series 等到文件在以前的任务上创建

How to make gulp.series wait until files are created on previous tasks

我目前正在使用这样的东西:

gulp.task('js', gulp.series('js-a', 'js-b', 'js-c'));

任务 js-c 需要先执行 js-ajs-b 并生成 2 个文件然后我在 js-c.

中合并

但是,无论我是否使用 gup-series,函数 js-c 都会在创建前两个任务的两个文件之前执行。

如何告诉 gulp 系列等待那些?

我读过其他相关问题,但他们倾向于依赖外部脚本来完成此任务。 我通过在 js-b 上添加 setTimeout 手动设法解决此问题,但似乎是一个 hacky 解决方案。

有什么合适的方法可以用 gulp.series 完成这个吗?

为了让您了解上下文,任务 js-a 如下所示:

var gp_concat = require('gulp-concat');

gulp.task('js-a', function(done) {
    gulp.src([
            'file1.js',
            'file2.js'
        ])
        .pipe(gp_concat('tmp.js'))
        .pipe(gulp.dest('./'));

        done();
});

我现在被迫使用超时来解决这个问题:

setTimeout(function(){
    done();
}, 500);

done() 不应在这种情况下使用,任务应 return 流(参见 here)。请试试这个:

var gp_concat = require('gulp-concat');

gulp.task('js-a', function() {
    return gulp.src([
            'file1.js',
            'file2.js'
        ])
        .pipe(gp_concat('tmp.js'))
        .pipe(gulp.dest('./'));
});