创建自定义注册表#
允许将自定义注册表插入任务系统,该系统可以提供共享任务或增强功能。使用 registry() 注册注册表。
结构#
为了被 gulp 接受,自定义注册表必须遵循特定格式。
如果传递给 registry() 的注册表实例没有所有这四种方法,将会抛出一个错误。
注册#
如果我们希望注册上面示例中的注册表,我们需要将它的一个实例传递给 registry()。
方法#
init(gulpInst)#
注册表的init()方法在registry()函数的最后调用。作为唯一参数传递的 gulp 实例(gulpInst)可用于使用 gulpInst.task(taskName, fn)预定义任务。
参数#
| 参数 | 类型 | 备注 |
|---|---|---|
| gulpInst | 对象 | gulp 实例。 |
get(name)#
get()方法接收自定义注册表要解析和返回的任务name,如果不存在具有该名称的任务,则返回undefined。
参数#
| 参数 | 类型 | 备注 |
|---|---|---|
| name | 字符串 | 要检索的任务的名称。 |
set(name, fn)#
set()方法接收任务name和fn。这在内部由task()调用,以向自定义注册表提供用户注册的任务。
参数#
| 参数 | 类型 | 备注 |
|---|---|---|
| name | 字符串 | 要设置的任务的名称。 |
| fn | 函数 | 要设置的任务函数。 |
tasks()#
必须返回一个列出注册表中所有任务的对象。
用例#
共享任务#
要与所有项目共享通用任务,您可以在注册表上公开一个 init 方法,它将接收一个 gulp 实例作为唯一参数。然后,您可以使用 gulpInst.task(name, fn) 注册预定义任务。
例如,您可能希望共享一个 clean 任务
然后在项目中使用它
共享功能#
通过控制将任务添加到注册表的方式,您可以对其进行装饰。
例如,如果您希望所有任务共享某些数据,则可以使用自定义注册表将它们绑定到该数据。请务必返回已更改的任务,如上文注册表方法的说明中所述
示例#
- undertaker-registry:Gulp 4 默认注册表。
- undertaker-common-tasks:预定义任务的概念验证自定义注册表。
- undertaker-task-metadata:将元数据附加到每个任务的概念验证自定义注册表。