gulp.parallel()

2020-09-30 18:06 更新

gulp.parallel()介紹

將任務(wù)功能和/或組合操作組合成同時執(zhí)行的較大操作。對于使用 series() 和 parallel() 進行嵌套組合的深度沒有強制限制。

gulp.parallel()用法

const { parallel } = require('gulp');

function javascript(cb) {
  // body omitted
  cb();
}

function css(cb) {
  // body omitted
  cb();
}

exports.build = parallel(javascript, css); 

gulp.parallel()函數(shù)原型

parallel(...tasks)

參數(shù)

參數(shù)類型注解
tasks
(required)
function
string
任意數(shù)量的任務(wù)函數(shù)都可以作為單獨的參數(shù)傳遞。如果您以前注冊過任務(wù),可以使用字符串,但不建議這樣做。

返回值

返回一個組合操作,它將注冊為任務(wù)或嵌套在其他 series 和/或 parallel 組合中。

當(dāng)執(zhí)行組合操作時,所有任務(wù)將以最大并發(fā)性運行。如果一個任務(wù)發(fā)生錯誤,其他任務(wù)可能不確定地完成,也可能不完成。

可能出現(xiàn)的錯誤

當(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ù)從未定義)。

向前引用(Forward references)

向前引用是指使用尚未注冊的字符串引用組合任務(wù)。在舊版本中,這是一種常見的實踐,但是為了實現(xiàn)更快的任務(wù)運行時間和促進使用命名函數(shù),刪除了該特性。

在較新的版本中,如果嘗試使用向前引用,將會得到一個錯誤,消息為 “Task never defined”。當(dāng)您嘗試為您的任務(wù)注冊和按字符串組合任務(wù)使用 exports 時,可能會遇到這種情況。在這種情況下,使用命名函數(shù)而不是字符串引用。

在遷移期間,您可能需要使用 forward reference registry。這將為每個任務(wù)引用添加一個額外的閉包,并顯著降低構(gòu)建速度。不要太長時間依賴這個修復(fù)程序。

避免重復(fù)任務(wù)

當(dāng)一個組合操作執(zhí)行時,每個任務(wù)(task)的每次調(diào)用都將被執(zhí)行。

在兩個不同的組合中引用的 clean 任務(wù)將運行兩次,將導(dǎo)致不期望的結(jié)果。因此,建議在最終的組合中指定 clean 任務(wù)。

如果你有如下代碼:

// 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));


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號