parallel()#

将任务函数和/或组合操作合并到更大的操作中,这些操作将同时执行。使用 series()parallel() 对组合操作进行嵌套时,没有强制限制嵌套深度。

用法#

const { parallel } = require('gulp');
function javascript(cb) {
// 省略正文
cb();
}
函数 css(cb) {
// 省略正文
cb();
}
导出.构建 = 并行(javascript, css);

签名#

并行(...任务)

参数#

参数类型说明
任务
(必需)
函数
字符串
可以将任意数量的任务函数作为单独的参数传递。如果您之前已注册任务,则可以使用字符串,但不建议这样做。

返回#

一个组合操作,可以注册为任务或嵌套在其他 series 和/或 parallel 组合中。

当执行组合操作时,所有任务都将以最大并发性运行。如果一个任务中发生错误,则其他任务可能完成,也可能不完成。

错误#

当没有传递任务时,抛出错误,消息为“应该使用 series 或 parallel 组合一个或多个任务”。

当传递无效任务或未注册任务时,抛出错误,消息为“任务未定义”。

前向引用#

前向引用是指使用尚未注册的字符串引用来组合任务。这在较旧版本中是一种常见做法,但此功能已被移除,以实现更快的任务运行时并促进命名函数的使用。

在较新版本中,如果您尝试使用前向引用,您将收到一条错误消息,“任务未定义”。当尝试将 exports 用于任务注册通过字符串组合任务时,您可能会遇到这种情况。在这种情况下,请使用命名函数而不是字符串引用。

在迁移期间,您可能需要前向引用注册表。这将为每个任务引用添加一个额外的闭包,并大幅减慢您的构建速度。不要长期依赖此修复程序

避免重复任务#

当运行组合操作时,每次提供任务时都会执行每个任务。

在两个不同的组合中引用的 clean 任务将运行两次并导致意外结果。相反,重构 clean 任务以在最终组合中指定。

如果您有如下代码

// 这是不正确的
const { series, parallel } = require('gulp');
const clean = function(cb) {
// 省略正文
cb();
};
const css = series(clean, function(cb) {
// 省略正文
cb();
});
const javascript = series(clean, function(cb) {
// 省略正文
cb();
});
exports.build = parallel(css, javascript);

迁移到此

const { series, parallel } = require('gulp');
function clean(cb) {
// 省略正文
cb();
}
函数 css(cb) {
// 省略正文
cb();
}
function javascript(cb) {
// 省略正文
cb();
}
exports.build = series(clean, parallel(css, javascript));