2014-12-30 78 views
3

我有一個是由與此類似其他的構建任務的咕嘟咕嘟生成任務:從其他Gulp任務中完成任務?

gulp.task('build', ['build-html', 'build-css', 'build-js', 'build-images']); 

我討厭關於這個事情是build任務不運行,直到依賴性完成後:

Starting 'build-html'... 
Finished 'build-html' after 1 s 
Starting 'build-css'... 
Finished 'build-css' after 1 s 
Starting 'build-js'... 
Finished 'build-js' after 1 s 
Starting 'build-images'... 
Finished 'build-images' after 1 s 
Starting 'build'... 
Finished 'build' after 1 ms 

現在很明顯,build不應該運行,直到它的依賴關係完成,因此它的工作方式與預期的一樣。但是這導致控制檯說build只花了1毫秒,實際上它應該說花了4秒,因爲它的所有依賴關係花了那麼長時間。

Starting 'build'... 
Starting 'build-html'... 
Finished 'build-html' after 1 s 
Starting 'build-css'... 
Finished 'build-css' after 1 s 
Starting 'build-js'... 
Finished 'build-js' after 1 s 
Starting 'build-images'... 
Finished 'build-images' after 1 s 
Finished 'build' after 4 s 

注意如何build是「開始」,然後所有的依賴運行,那麼build結束第一件事:如果它看起來像這樣就好。

所以我想知道,而不是使用任務依賴關係,我可以從build任務中每次調用一個任務嗎?如果是這樣,我用什麼命令來做到這一點?

這是一個壞主意嗎?有沒有更好的解決這個問題?

+0

有沒有你需要能夠打印的總時間是有原因的這樣的所有構建任務? – lukewestby

+0

我只是好奇總構建時間是多久。上面的例子大大簡化了。實際上,當一些構建任務涉及將文件上傳到遠程服務器,源控制交互,優化數百個圖像等時,需要花費更長的時間...... –

+0

實際上,您並未先運行'build',而是在所有的任務依賴。你只是想知道所有任務花費多少時間來完成任務,還是需要按順序執行任務?編輯:(我之前讀過你的評論) – Rigotti

回答

1

我想你可以使用runSequence插件來做你想做的。

由於您build任務的唯一目的是發動所有的build-*任務,沒有特定的順序,這可能是這樣的:

var rs = require('run-sequence'); 

gulp.task('build', function (cb) { 
    rs(['build-css', 'build-html', 'build-js', 'build-images'], cb); 
});