2014-11-04 53 views
0

我對使用Gulp完成任務的順序有些困惑。請允許我解釋一下。吞嚥處理任務的順序是什麼?

在gulpfile.js中,我有我所需的所有依賴關係,後面跟着一組任務。

每個子任務的基本模板是

gulp.task('compress:customName', function() { 
    return gulp.src(['app/folder/file.js', 'app/folder/file.js']) 
     .pipe(gp_concat('app.customName.min.js')) 
     .pipe(gp_uglify()) 
     .pipe(gulp.dest(distDir)); 
}); 

然後,我有一個規則,他們都

gulp.task('compress:all', [ 
    'compress:customName1', 
    'compress:customName2', 
    'etc...' 
], function() {}); 

後來有多個主任務運行一個任務(只使用壓縮:所有這例如)

gulp.task('master', ['compress:all'], function() { 
    return gulp.src('dist/*.js') 
     .pipe(notify("COMPRESSION COMPLETE")); 
}); 

好的......這是基本的設置......現在來討論這些任務出現的順序。 o根據命令行結果完成。

[11:06:44] Using gulpfile C:\PATH\TO\PROJECT\gulpfile.js 
[11:06:44] Starting 'compress:customName1'... 
[11:06:44] Starting 'compress:customName2'... 
[11:06:44] Starting 'compress:customName3'... 
[11:06:44] Starting 'compress:customName4'... 
[11:06:44] Starting 'compress:customName5'... 
[11:06:44] Starting 'compress:customName6'... 
[11:06:44] Starting 'compress:customName7'... 
[11:06:44] Finished 'compress:customName1' after 108 ms 
[11:06:44] Finished 'compress:customName6' after 93 ms 
[11:06:44] Finished 'compress:customName5' after 132 ms 
[11:06:44] Finished 'compress:customName4' after 139 ms 
[11:06:44] Finished 'compress:customName3' after 233 ms 
[11:06:44] Finished 'compress:customName2' after 245 ms 
[11:06:44] Finished 'compress:customName7' after 381 ms 
[11:06:44] Starting 'compress:all'... 
[11:06:44] Finished 'compress:all' after 6.64 µs 
[11:06:44] Starting 'master'... 
[11:06:44] gulp-notify: [SO EXAMPLE : Gulp Builder] COMPRESSION COMPLETE 
[11:06:44] Finished 'master' after 40 ms 

'master'如何成爲'compress:all'之後的最後一個啓動和啓動任務?

爲什麼完成的任務以這種隨機順序顯示?

爲什麼說'master'只有40毫秒才能完成,它應該等待它調用的所有子任務,然後再考慮自己的完成?

+0

我沒有看到你的榜樣'compress'任務。你的意思是'主人'? – Heikki 2014-11-04 17:45:44

+0

是...更新... thx – beauXjames 2014-11-04 17:47:30

回答

0

'master'如何成爲'compress:all'後面的最後一個啓動和啓動任務?

相關性在實際任務開始之前運行。 'compress:all'是'master'的依賴關係。

爲什麼Finished任務以這樣的隨機順序顯示?

依賴關係並行運行,即完成一個依賴關係只取決於完成一個所需的時間。

爲什麼說'master'只有40毫秒才完成,它應該等待它調用的所有子任務,然後再考慮自己完成?

任務的完成時間中不包括依存關係。


「DEPS - 任務的數組被執行並完成之前,你的任務將會運行。」

https://github.com/gulpjs/gulp/blob/master/docs/API.md#deps

+0

依賴項是按照它們添加到任務的順序運行的嗎? – beauXjames 2014-11-04 18:03:20

+0

不,他們都在同一時間開始〜並行運行。 – Heikki 2014-11-04 18:04:56

+0

好的...我明白了。我在同一頁面上閱讀,可以返回承諾而不是流。你有什麼建議使用它來獲得對一系列操作的更多控制嗎? – beauXjames 2014-11-04 19:41:43