Выпейте 4 многократных задания на одном источнике и в серии

Я редактирую свой gulpfile, как показано ниже:

gulp.task('watch', function() {
    gulp.watch('**/*.html', gulp.series('htmlcomb'));
    gulp.watch('css/**/*.scss', gulp.series('csscomb'));
    gulp.watch('css/**/*.scss', gulp.series('cssmin'));        
    gulp.watch('js/**/*.js', gulp.series('jsmin'));
});

Но когда я запускаю gulp watch, он останавливается после csscomb. Когда я редактирую файл scss. Это только гребень на нем.

Я могу запустить htmlcomb, jsmin и (cssbomb + cssmin) как асинхронный. Но мне нужно запустить cssmin после csscomb.

1 ответ

Если вы хотите, чтобы csscomb запускался до cssmin, просто используйте:

gulp.task('watch', function() {
    gulp.watch('**/*.html', gulp.series('htmlcomb'));

    gulp.watch('css/**/*.scss', gulp.series('csscomb', 'cssmin'));

    gulp.watch('js/**/*.js', gulp.series('jsmin'));
});

На самом деле, если вы используете gulp4.0, ваши функции могут иметь вид:

function csscomb() {
  return gulp.src(…...)
    .pipe.....)
    .pipe(gulp.dest(…...));
}

поэтому ваши задачи наблюдения вызывают функции, а не задачи, и выглядят так:

gulp.task('watch', function() {
    gulp.watch('**/*.html', gulp.series(htmlcomb));

    gulp.watch('css/**/*.scss', gulp.series(csscomb, cssmin));

    gulp.watch('js/**/*.js', gulp.series(jsmin));
});
Другие вопросы по тегам