將任務(wù)函數(shù)和/或組合操作組合成更大的操作,這些操作將按順序依次執(zhí)行。對于使用 series() 和 parallel() 組合操作的嵌套深度沒有強(qiáng)制限制。
const { series } = require('gulp');
function javascript(cb) {
// body omitted
cb();
}
function css(cb) {
// body omitted
cb();
}
exports.build = series(javascript, css);
series(...tasks)
參數(shù) | 類型 | 描述 |
---|---|---|
tasks (required) | function string | 任意數(shù)量的任務(wù)函數(shù)都可以作為單獨的參數(shù)傳遞。如果您以前注冊過任務(wù),可以使用字符串,但不建議這樣做。 |
返回一個組合操作,它將注冊為任務(wù)或嵌套在其他 series 和/或 parallel 組合中。
當(dāng)執(zhí)行組合操作時,所有任務(wù)將按順序運(yùn)行。如果一個任務(wù)中發(fā)生錯誤,則不會運(yùn)行后續(xù)任務(wù)。
當(dāng)沒有傳遞任何任務(wù)時,拋出一個錯誤,并提示 "One or more tasks should be combined using series or parallel"。(一個或多個應(yīng)該使用 series 或 parallel 組合的任務(wù)”。)
當(dāng)傳遞無效的任務(wù)或未注冊的任務(wù)時,將拋出一個錯誤,顯示 "Task never defined"(任務(wù)從未定義)。
向前引用是指使用尚未注冊的字符串引用組合任務(wù)。在舊版本中,這是一種常見的實踐,但是為了實現(xiàn)更快的任務(wù)運(yùn)行時間和促進(jìn)使用命名函數(shù),刪除了該特性。
在較新的版本中,如果嘗試使用向前引用,將會得到一個錯誤,消息為 “Task never defined”。當(dāng)您嘗試為您的任務(wù)注冊和按字符串組合任務(wù)使用 exports 時,可能會遇到這種情況。在這種情況下,使用命名函數(shù)而不是字符串引用。
在遷移期間,您可能需要使用 forward reference registry。這將為每個任務(wù)引用添加一個額外的閉包,并顯著降低構(gòu)建速度。不要太長時間依賴這個修復(fù)程序。
當(dāng)運(yùn)行組合操作時,每個任務(wù)將在每次提供時執(zhí)行。
在兩個不同的組合中引用的 clean 任務(wù)將運(yùn)行兩次,將導(dǎo)致不期望的結(jié)果。因此,建議在最終組合中指定 clean 任務(wù)。
If you have code like this:
// This is INCORRECT
const { series, parallel } = require('gulp');
const clean = function(cb) {
// body omitted
cb();
};
const css = series(clean, function(cb) {
// body omitted
cb();
});
const javascript = series(clean, function(cb) {
// body omitted
cb();
});
exports.build = parallel(css, javascript);
可轉(zhuǎn)換為:
const { series, parallel } = require('gulp');
function clean(cb) {
// body omitted
cb();
}
function css(cb) {
// body omitted
cb();
}
function javascript(cb) {
// body omitted
cb();
}
exports.build = series(clean, parallel(css, javascript));
更多建議: