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])
参数
参数 | 类型 | 说明 |
---|---|---|
registryInstance | object | 一个具有get(taskName) 和set(taskName, fn) 方法的对象。 |
返回值
如果未传入参数,返回当前设置的注册表实例。当传入一个注册表实例时,返回 gulp 实例以实现链式操作。
错误
当注册表实例被传入但缺少 get
方法时,会抛出一个带有"自定义注册表必须有 get 方法"消息的错误。
当注册表实例被传入但缺少 set
方法时,会抛出一个带有"自定义注册表必须有 set 方法"消息的错误。
当注册表实例被传入但没有实例化,会抛出一个带有"自定义注册表必须被实例化,但看起来你传递了一个构造函数"消息的错误。
自定义注册表
自定义注册表可用于为任务提供共享功能,还可以修改任务执行的行为。它们提供了一个强大的机制来扩展 gulp。
有多种自定义注册表可用:
- undertaker-registry: 默认注册表
- undertaker-forward-reference: 一种允许引用尚未注册的任务的注册表
- undertaker-task-metadata: 一种通过任务元数据扩展任务的注册表
关于创建自定义注册表的更多信息,请参见创建自定义注册表。
undertaker-forward-reference
如果你需要以类似 gulp 3.x 的方式引用尚未定义的任务,可以使用 undertaker-forward-reference
包。这在处理庞大且模块化的 gulpfile 时可能会很有帮助,尤其是在 ES5 中。如果可能,我们建议您使用 ES2015 模块来导入和导出您的任务。
用法
const FwdRef = require('undertaker-forward-reference');
registry(FwdRef());