NormalModuleFactory 钩子
NormalModuleFactory 钩子
NormalModuleFactory 模块被 Compiler 用于生成模块。从入口点开始,它解析每个请求,解析内容以查找更多请求,并通过解析所有请求和解析任何新文件来持续爬取文件。在最后阶段,每个依赖都会成为一个 Module 实例。
NormalModuleFactory 类继承自 Tapable,并提供以下生命周期钩子。它们可以像 compiler 钩子一样被 tap:
js
const nmf = NormalModuleFactory.hooks;
nmf.someHook.tap("MyPlugin", (resolveData) => {
// ...
});
NormalModuleFactory 会创建 Parser 和 Generator 实例,这些实例可以通过 HookMap 进行访问。必须传入 identifier 才能 tap 这些实例:
js
NormalModuleFactory.hooks.parser
.for("javascript/esm")
.tap("MyPlugin", (parser, parserOptions) => {
// ...
});
与 compiler 类似,根据钩子类型的不同,tapAsync 和 tapPromise 也可能可用。
beforeResolve
AsyncSeriesBailHook
当遇到新的依赖请求时调用。返回 false 可以忽略某个依赖。否则,应返回 undefined 以继续处理。
- 回调参数:
resolveData
factorize
AsyncSeriesBailHook
在开始解析之前调用。应返回 undefined 以继续处理。
- 回调参数:
resolveData
resolve
AsyncSeriesBailHook
在请求被解析之前调用。返回 false 可以忽略某个依赖。返回一个 Module 实例将终结整个流程。否则,应返回 undefined 以继续处理。
- 回调参数:
resolveData
resolveForScheme
AsyncSeriesBailHook
在带有 scheme(URI)的请求被解析之前调用。
- 回调参数:
resolveData
afterResolve
AsyncSeriesBailHook
在请求被解析之后调用。
- 回调参数:
resolveData
createModule
AsyncSeriesBailHook
在创建 NormalModule 实例之前调用。
- 回调参数:
createDataresolveData
createModuleClass
HookMap<SyncBailHook>
5.81.0+
一个允许你在创建模块时覆盖 NormalModule 类的钩子。此钩子在 createModule 钩子之后、module 钩子之前调用。
-
Hook 参数:
identifier -
回调参数:
createDataresolveData
module
SyncWaterfallHook
在创建 NormalModule 实例之后调用。
- 回调参数:
modulecreateDataresolveData
createParser
HookMap<SyncBailHook>
在创建 Parser 实例之前调用。parserOptions 是 module.parser 中对应 identifier 的选项,或一个空对象。
-
Hook 参数:
identifier -
回调参数:
parserOptions
parser
HookMap<SyncHook>
在创建 Parser 实例之后触发。
-
Hook 参数:
identifier -
回调参数:
parserparserOptions
可能的默认 identifier:
javascript/autojavascript/dynamicjavascript/esmjsonwebassembly/syncwebassembly/asyncasset
createGenerator
HookMap<SyncBailHook>
在创建 Generator 实例之前调用。generatorOptions 是 module.parser 中对应 identifier 的选项,或一个空对象。
-
Hook 参数:
identifier -
回调参数:
generatorOptions
generator
HookMap<SyncHook>
在创建 Generator 实例之后触发。
-
Hook 参数:
identifier -
回调参数:
generatorgeneratorOptions
可能的默认 identifier:
jsonwebassembly/syncwebassembly/asyncassetasset/sourceasset/resourceasset/inlineasset/bytes
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
