创建自定义注册表
允许将自定义注册表插入到任务系统中,可以提供共享任务或增强功能。注册表使用 registry()
进行注册。
结构
为了被 gulp 接受,自定义注册表必须遵循特定格式。
// 作为函数
function TestRegistry() {}
TestRegistry.prototype.init = function (gulpInst) {}
TestRegistry.prototype.get = function (name) {}
TestRegistry.prototype.set = function (name, fn) {}
TestRegistry.prototype.tasks = function () {}
// 作为类
class TestRegistry {
init(gulpInst) {}
get(name) {}
set(name, fn) {}
tasks() {}
}
如果传递给 registry()
的注册表实例没有全部四个方法,将抛出错误。
注册
如果我们想注册上面的示例注册表,我们需要将其实例传递给 registry()
。
const { registry } = require('gulp');
// ... TestRegistry 设置代码
// 正确!
registry(new TestRegistry())
// 错误!
registry(TestRegistry())
// 这将触发错误:'Custom registries must be instantiated, but it looks like you passed a constructor'
方法
init(gulpInst)
注册表的 init()
方法在 registry()
函数的最后被调用。作为唯一参数传递的 gulp 实例(gulpInst
)可用于使用 gulpInst.task(taskName, fn)
预定义任务。