在「插件对象」 部分我们知道插件对象包含了一个 setup
函数,该函数不仅包含了一个 api
对象参数,同时还可以返回一个 Hooks 对象。
插件的 setup
函数会提供一个 api
对象参数,你可以调用该对象上提供的一些方法来获取到配置、项目上下文等信息。
api.useAppContext
用于获取项目上下文信息。
通过实际的类型文件,我们可以看到还存在一些其他字段,不过目前对于 Modern.js Module 有意义的字段只有以上内容,api 对象其他的方法也是如此。
api.useResolvedConfigContext
用于获取解析之后的最终配置。
如果需要获取构建相关的最终配置,需要使用 beforeBuild
Hook。
api.useHookRunners
用于获取 Hooks 的执行器,并触发特定的 Hook 执行。
CLI 插件的 setup 可以是一个异步函数,在初始化过程中执行异步逻辑。
注意,只有当前插件的 setup 异步函数执行完毕,才会继续执行下一个插件的 setup 函数。因此,你需要避免在 setup 函数中进行耗时过长的异步操作,防止影响 CLI 启动性能。
我们知道 setup
函数会返回一个 Hooks 对象,所谓 Hooks 对象也可以理解是具有 Modern.js Module 生命周期钩子的对象。
目前主要包含两类钩子:
build
命令构建源码产物时触发。buildPlatform
钩子:仅在执行 build --platform
命令生成其他构建产物时触发。dev
命令时会触发的钩子。关于生命周期钩子的完整列表参考 API 文档。