Webpack:NormalModuleFactory Hooks
使用模块Compiler生成各类模块。从入口点开始,此模块会解析每个请求,解析文件内容以查找下一步的请求,然后通过解析所有请求以及解析新的文件来重新取全部文件。在NormalModuleFactory最后一段,每个依赖项都会成为一个模板实例。
类NormalModuleFactory扩展了Tapable并提供了以下的生命周期锁子。你可以像使用编译器锁子一样使用它们:
NormalModuleFactory.hooks.someHook.tap(/* ... */);
创造NormalModuleFactory了可靠HookMaps访问的Parser和Generator实例。同时必须上传identifier才能使用以下代码:
NormalModuleFactory.hooks.someHook.for('identifier').tap(/* ... */);
与compiler一样,tapAsync和tapPromise是否可用取决于钩子的类型。
解决之前
AsyncSeriesBailHook
当遇到新的依赖项请申请时调用。可以通过返回 false 来忽略依赖项。否则,返回undefined以继。
- 回调参数
resolveData:
因式分解
AsyncSeriesBailHook
在初始解析之前调用。它应该返回undefined以继。
- 回调参数
resolveData:
解决
AsyncSeriesBailHook
在请求被解析之前调用。可以通过返回false来忽略依赖项。返回一个模块实例将结束程序。否则,返回undefined继续。
- 回调参数
resolveData:
解决方案 $#resolveForScheme$
AsyncSeriesBailHook
在解析符统一一个资源标记符方案(URI)的请求之前调用。
- 回调参数
resolveData:
后解决$#afterResolve$
AsyncSeriesBailHook
在请求解析后调整。
- 回调参数
resolveData:
创建模块 $#createModule$
AsyncSeriesBailHook
在创建 NormalModule 实例之前调用。
- 回调参数:
createData resolveData
module
SyncWaterfallHook
在创建 NormalModule 实例后调用。
- 回调参数:
module createData resolveData
createParser $#createParser$
HookMap<SyncBailHook>
在 Parser 实例创建之前调用。parserOptions 是 module.parser 中对应标识符或空对象的选项。
- 钩子参数:
identifier - 回调参数:
parserOptions
parser
HookMap<SyncHook>
在创建 Parser 实例后触发。
- 钩子参数:
identifier - 回调参数:
parser parserOptions
可能的默认标识符:
-
javascript/auto -
javascript/dynamic -
javascript/esm -
json -
webassembly/sync -
webassembly/async -
asset
createGenerator $#createGenerator$
HookMap<SyncBailHook>
在 Generator 实例创建之前调用。generatorOptions 是 module.parser 中对应标识符或空对象的选项。
- 钩子参数:
identifier - 回调参数:
generatorOptions
generator
HookMap<SyncHook>
在 Generator 实例创建之后调用。
- 钩子参数:
identifier - 回调参数:
generator generatorOptions
可能的默认标识符:
-
json -
webassembly/sync -
webassembly/async -
asset -
asset/source -
asset/resource -
asset/inline