我有两项任务。他们有一个共同的任务,应该在任务之前执行。
使用 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次,这是不受欢迎的,因为完成了一项备用工作。如何让任务只运行一次,保持独立运行test
和minify
任务的能力?
答案 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。