Gulp series()

🌙
手机阅读
本文目录结构
axihe

series()

将任务函数和 / 或组合操作组合成更大的操作,这些操作将按顺序依次执行。

对于使用 series()parallel() 组合操作的嵌套深度没有强制限制。

用法

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

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

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

exports.build = series(javascript, css);

函数原型

series(...tasks)

参数

参数类型描述
tasks
(required)
function
string
任意数量的任务函数都可以作为单独的参数传递。如果您以前注册过任务,可以使用字符串,但不建议这样做。

返回值

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

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

可能出现的错误

当没有传递任何任务时,抛出一个错误,并提示 “One or more tasks should be combined using series or parallel”。(一个或多个应该使用 series 或 parallel 组合的任务”。)

当传递无效的任务或未注册的任务时,将抛出一个错误,显示 “Task never defined”(任务从未定义)。

向前引用(Forward references)

向前引用是指使用尚未注册的字符串引用组合任务。在旧版本中,这是一种常见的实践,但是为了实现更快的任务运行时间和促进使用命名函数,删除了该特性。

在较新的版本中,如果尝试使用向前引用,将会得到一个错误,消息为 “Task never defined”。当您尝试为您的任务注册_和_按字符串组合任务使用 exports 时,可能会遇到这种情况。在这种情况下,使用命名函数而不是字符串引用。

在迁移期间,您可能需要使用 forward reference registry。这将为每个任务引用添加一个额外的闭包,并显著降低构建速度。不要太长时间依赖这个修复程序

避免重复任务

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

在两个不同的组合中引用的 clean 任务将运行两次,将导致不期望的结果。因此,建议在最终组合中指定 clean 任务。

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

可转换为:

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

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili 和抖音。

关注我: Github / 知乎

如果你加我的私人微信,麻烦写上您的 称呼,所在地区,职业,方便我备注,谢谢


本站的微信公众号

阿西河前端教程

Anbang

安邦的私人微信

微信号: yaolushan

Anbang

Bilibili(B站)

朱安邦

Anbang