NormalModuleFactory
模块由 Compiler
用于生成模块。从入口点开始,它解析每个请求,解析内容以查找更多请求,并通过解析所有新文件并解析任何新文件来继续遍历文件。在最后阶段,每个依赖项都成为一个 Module 实例。
NormalModuleFactory
类扩展了 Tapable
并提供以下生命周期钩子。它们可以像编译器钩子一样被调用。
NormalModuleFactory.hooks.someHook.tap(/* ... */);
NormaleModuleFactory 创建 Parser
和 Generator
实例,可以通过 HookMaps 访问它们。必须传递标识符才能调用这些实例。
NormalModuleFactory.hooks.someHook.for('identifier').tap(/* ... */);
与 compiler
一样,tapAsync
和 tapPromise
也可能根据钩子的类型而可用。
AsyncSeriesBailHook
当遇到新的依赖请求时调用。可以通过返回 false
来忽略依赖项。否则,应返回 undefined
以继续执行。
resolveData
AsyncSeriesBailHook
在启动解析之前调用。应返回 undefined
以继续执行。
resolveData
AsyncSeriesBailHook
在请求解析之前调用。可以通过返回 false
来忽略依赖项。返回 Module 实例将完成该过程。否则,应返回 undefined
以继续执行。
resolveData
AsyncSeriesBailHook
在解析具有方案(URI)的请求之前调用。
resolveData
AsyncSeriesBailHook
在请求解析后调用。
resolveData
AsyncSeriesBailHook
在创建 NormalModule
实例之前调用。
createData
resolveData
HookMap<SyncBailHook>
一个钩子,允许您在创建模块时覆盖 NormalModule
类。此钩子在 createModule
钩子之后和 module
钩子之前调用。
钩子参数:identifier
回调参数:createData
resolveData
SyncWaterfallHook
在创建 NormalModule
实例后调用。
module
createData
resolveData
HookMap<SyncBailHook>
在创建 Parser
实例之前调用。parserOptions
是 module.parser 中对应标识符的选项,或是一个空对象。
钩子参数:identifier
回调参数:parserOptions
HookMap<SyncHook>
在创建 Parser
实例后触发。
钩子参数:identifier
回调参数:parser
parserOptions
可能的默认标识符
javascript/auto
javascript/dynamic
javascript/esm
json
webassembly/sync
webassembly/async
asset
HookMap<SyncBailHook>
在创建 Generator
实例之前调用。generatorOptions
是 module.parser 中对应标识符的选项,或是一个空对象。
钩子参数:identifier
回调参数:generatorOptions
HookMap<SyncHook>
在创建 Generator
实例后调用。
钩子参数:identifier
回调参数:generator
generatorOptions
可能的默认标识符
json
webassembly/sync
webassembly/async
asset
asset/source
asset/resource
asset/inline