如何让Gulp 4多次运行单个任务?

时间:2018-05-15 04:35:03

标签: javascript gulp gulp-4

我有两项任务。他们有一个共同的任务,应该在任务之前执行。

使用 Gulp 3 我以这种方式实现它们:

gulp.task('compile', () => {
    // Compiling the TypeScript files to JavaScript and saving them on disk
});

gulp.task('test', ['compile'], () => {
    // Running tests with the compiled files
});

gulp.task('minify', ['compile'], () => {
    // Minifying the compiled files using Uglify
});

guls.task('default', ['test', 'minify']);

当我运行gulp default时,compile任务只运行一次。

Gulp 4 中,我用这种方式实现它们:

gulp.task('compile', () => {
    // Compiling the TypeScript files to JavaScript and saving them on disk
});

gulp.task('test', gulp.series('compile', () => {
    // Running tests with the compiled files
}));

gulp.task('minify', gulp.series('compile', () => {
    // Minifying the compiled files using Uglify
}));

guls.task('default', gulp.parallel('test', 'minify'));

当我运行gulp default时,compile任务运行2次,这是不受欢迎的,因为完成了一项备用工作。如何让任务只运行一次,保持独立运行testminify任务的能力?

1 个答案:

答案 0 :(得分:2)

由于您尝试并行运行测试和缩小,因此只能进行一次运行编译,因为它将成为顺序操作。你可以做到,

gulp.task('compile', () => {
    // Compiling the TypeScript files to JavaScript and saving them on disk
});

gulp.task('test',() => {
    // Running tests with the compiled files
}));

gulp.task('minify',=> {
    // Minifying the compiled files using Uglify
}));

gulp.task('compile-and-test', gulp.series('compile','test'));

gulp.task('compile-and-minify', gulp.series('compile','minify'));

guls.task('default', gulp.series('compile', gulp.parallel('test', 'minify'));

这种方法允许您运行单独的操作,并且只在执行编译一次时使测试和缩小操作并行。

您可以阅读更多详情here