NormalModuleFactory 钩子

`NormalModuleFactory` 模块由 `Compiler` 使用来生成模块。它从入口点开始,解析每个请求,解析内容以查找进一步的请求,并通过解析所有新文件并解析任何新文件来持续遍历文件。在最后阶段,每个依赖都成为一个 Module 实例。

`NormalModuleFactory` 类扩展了 `Tapable`,并提供了以下生命周期钩子。它们可以像编译器钩子一样被绑定。

NormalModuleFactory.hooks.someHook.tap(/* ... */);

NormalModuleFactory 创建 `Parser` 和 `Generator` 实例,这些实例可以通过 HookMaps 访问。必须传入标识符才能绑定到这些钩子。

NormalModuleFactory.hooks.someHook.for('identifier').tap(/* ... */);

与编译器一样,tapAsynctapPromise 也可能可用,具体取决于钩子的类型。

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` 实例创建前调用。

  • 回调参数:`createData` `resolveData`

createModuleClass

HookMap<SyncBailHook>

5.81.0+

一个钩子,允许你在创建模块时覆盖 `NormalModule` 类。此钩子在 createModule 钩子之后,module 钩子之前调用。

  • 钩子参数: identifier

  • 回调参数:`createData` `resolveData`

module

SyncWaterfallHook

在 `NormalModule` 实例创建后调用。

  • 回调参数:`module` `createData` `resolveData`

createParser

HookMap<SyncBailHook>

在 `Parser` 实例创建前调用。`parserOptions` 是 module.parser 中对应标识符的选项,或者是一个空对象。

  • 钩子参数: identifier

  • 回调参数:`parserOptions`

parser

HookMap<SyncHook>

在 `Parser` 实例创建后触发。

  • 钩子参数: identifier

  • 回调参数:`parser` `parserOptions`

可能的默认标识符

  1. javascript/auto
  2. javascript/dynamic
  3. javascript/esm
  4. JSON
  5. webassembly/sync
  6. webassembly/async
  7. 资产

createGenerator

HookMap<SyncBailHook>

在 `Generator` 实例创建前调用。`generatorOptions` 是 module.generator 中对应标识符的选项,或者是一个空对象。

  • 钩子参数: identifier

  • 回调参数:`generatorOptions`

generator

HookMap<SyncHook>

在 `Generator` 实例创建后调用。

  • 钩子参数: identifier

  • 回调参数:`generator` `generatorOptions`

可能的默认标识符

  1. JSON
  2. webassembly/sync
  3. webassembly/async
  4. 资产
  5. asset/source
  6. asset/resource
  7. asset/inline

2 贡献者

iguessitsokaychenxsan