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
是否可用 取决于钩子的类型。
beforeResolve
AsyncSeriesBailHook
当遇到新的依赖项请求时调用。可以通过返回 false 来忽略依赖项。否则,返回 undefined
以继续。
- 回调参数:
resolveData
factorize
AsyncSeriesBailHook
在初始化解析之前调用。它应该返回 undefined
以继续。
- 回调参数:
resolveData
resolve
AsyncSeriesBailHook
在请求被解析之前调用。可以通过返回 false
来忽略依赖项。返回一个模块实例将结束进程。否则,返回 undefined
以继续。
- 回调参数:
resolveData
resolveForScheme $#resolveForScheme$
AsyncSeriesBailHook
在解析符合统一资源标志符方案(URI)的请求之前调用。
- 回调参数:
resolveData
afterResolve $#afterResolve$
AsyncSeriesBailHook
在请求解析后调用。
- 回调参数:
resolveData
createModule $#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