2017-06-22 130 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

非常感謝您的回答!運行序列在偉大的插件。 –