Как заставить gulp.series ждать, пока файлы не будут созданы в предыдущих задачах - PullRequest
4 голосов
/ 06 мая 2020
• 1000 *.

Однако, независимо от того, использую ли я gup-series, функция js-c запускается до того, как будут созданы два файла из двух предыдущих задач.

Как я могу сказать серии gulp, что они ждут?

Я читал другие связанные проблемы, но они, как правило, полагаются на внешние скрипты для выполнения sh этого. Мне вручную удалось исправить это, добавив setTimeout на js-b, но это похоже на хакерское решение.

Есть ли какой-нибудь правильный способ выполнить sh это с помощью 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);

1 Ответ

3 голосов
/ 17 мая 2020

done() не следует использовать в этом случае, и задача должна возвращать поток (см. здесь ). Пожалуйста, попробуйте это:

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('./'));
});
...