series()#

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

用法#

const { series } = require('gulp');
function javascript(cb) {
// body omitted
cb();
}
function css(cb) {
// body omitted
cb();
}
导出.构建 = 系列(javascript, css);

签名#

系列(...任务)

参数#

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

返回值#

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

当执行组合操作时,所有任务都将按顺序运行。如果一个任务中发生错误,则不会运行后续任务。

错误#

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

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

前向引用#

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

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

在迁移过程中,您可能需要使用前向引用注册表。这会为每个任务引用添加一个额外的闭包,并显著降低构建速度。不要长期依赖此修复方法

避免重复任务#

运行复合操作时,每次提供任务时都会执行该任务。

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

如果您有如下代码

// 这是不正确的
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);

迁移到此

const { series, parallel } = require('gulp');
function clean(cb) {
// body omitted
cb();
}
function css(cb) {
// body omitted
cb();
}
function javascript(cb) {
// body omitted
cb();
}
导出.构建 = 系列(清理, 并行(css, javascript));