跳到主要内容

registry()

允许通过传递自定义的注册表对象来插入不同的任务系统,该对象通过 get(taskName)set(taskName, fn) 方法实现一个简单的 TaskRegistry 接口。

用法

const { registry, task, series } = require('gulp');
const FwdRef = require('undertaker-forward-reference');

// 设置自定义注册表
registry(FwdRef());

// 在添加依赖的系列之前就使用它
task('default', series('clean', 'build'));

// 稍后定义它
task('clean', function(cb) {
// 省略主体
cb();
});

task('build', function(cb) {
// 省略主体
cb();
});

签名

registry([registryInstance])

参数

参数类型说明
registryInstanceobject一个具有get(taskName)set(taskName, fn)方法的对象。

返回值

如果未传入参数,返回当前设置的注册表实例。当传入一个注册表实例时,返回 gulp 实例以实现链式操作。

错误

当注册表实例被传入但缺少 get 方法时,会抛出一个带有"自定义注册表必须有 get 方法"消息的错误。

当注册表实例被传入但缺少 set 方法时,会抛出一个带有"自定义注册表必须有 set 方法"消息的错误。

当注册表实例被传入但没有实例化,会抛出一个带有"自定义注册表必须被实例化,但看起来你传递了一个构造函数"消息的错误。

自定义注册表

自定义注册表可用于为任务提供共享功能,还可以修改任务执行的行为。它们提供了一个强大的机制来扩展 gulp。

有多种自定义注册表可用:

关于创建自定义注册表的更多信息,请参见创建自定义注册表

undertaker-forward-reference

如果你需要以类似 gulp 3.x 的方式引用尚未定义的任务,可以使用 undertaker-forward-reference 包。这在处理庞大且模块化的 gulpfile 时可能会很有帮助,尤其是在 ES5 中。如果可能,我们建议您使用 ES2015 模块来导入和导出您的任务。

用法

const FwdRef = require('undertaker-forward-reference');

registry(FwdRef());