2017-06-22 90 views
0

我想编译sass通过gulp,然后uglify css为生产。当试图吞噬:顺序任务执行

gulp.task('build', ['sass', 'min-css'], function(){ 

    // ... 

}); 

我在控制台上运行以下报告:

[16:44:06] Starting 'sass'... 
[16:44:06] Starting 'min-css'... 
[16:44:22] Finished 'sass' after 16 s 
[16:44:22] Finished 'min-css' after 16 s 
[16:44:22] Starting 'build'... 
[16:44:22] Finished 'build' after 6.2 ms 

正如你看到的,sass任务结束前min-css任务开始。虽然它没有任何错误,但这个任务序列是不正确的。我需要sassmin-css开始前完成。

回答

1

gulp docs:“注意:任务将并行运行(一次全部运行),所以不要认为任务将按顺序开始/完成。”所以这就是为什么你的min-css任务可能会在sass任务之前开始或结束的原因。

有两种主要的方法可以解决这个问题。 (1)使'min-css'任务依赖'sass'任务。像

// identifies a dependent task must be complete before this one begins 

gulp.task('min-css', ['sass'], function() { 
    // task 'sass' is done now 
}); 

的东西(2)使用专为这个问题的一个插件像 run-sequence

运行的一饮而尽任务按指定顺序的序列。此函数旨在解决您定义运行顺序的情况,但选择不使用或不能使用依赖项。

(3)你也可以尝试gulp4.0,它有gulp.series和gulp.parallel函数来使这些事情更容易。 Gulp4在技术上处于测试阶段。

+0

非常感谢您的回答!运行序列在伟大的插件。 –