知海

NormalModuleFactory 钩子

webpackjsorg-mainAPI 参考

NormalModuleFactory 钩子

NormalModuleFactory 模块被 Compiler 用于生成模块。从入口点开始,它解析每个请求,解析内容以查找更多请求,并通过解析所有请求和解析任何新文件来持续爬取文件。在最后阶段,每个依赖都会成为一个 Module 实例。

NormalModuleFactory 类继承自 Tapable,并提供以下生命周期钩子。它们可以像 compiler 钩子一样被 tap:

js 复制代码
const nmf = NormalModuleFactory.hooks;
nmf.someHook.tap("MyPlugin", (resolveData) => {
  // ...
});

NormalModuleFactory 会创建 ParserGenerator 实例,这些实例可以通过 HookMap 进行访问。必须传入 identifier 才能 tap 这些实例:

js 复制代码
NormalModuleFactory.hooks.parser
  .for("javascript/esm")
  .tap("MyPlugin", (parser, parserOptions) => {
    // ...
  });

compiler 类似,根据钩子类型的不同,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 钩子之前调用。

  • Hook 参数:identifier

  • 回调参数:createData resolveData

module

SyncWaterfallHook

在创建 NormalModule 实例之后调用。

  • 回调参数:module createData resolveData

createParser

HookMap<SyncBailHook>

在创建 Parser 实例之前调用。parserOptionsmodule.parser 中对应 identifier 的选项,或一个空对象。

  • Hook 参数:identifier

  • 回调参数:parserOptions

parser

HookMap<SyncHook>

在创建 Parser 实例之后触发。

  • Hook 参数:identifier

  • 回调参数:parser parserOptions

可能的默认 identifier:

  1. javascript/auto
  2. javascript/dynamic
  3. javascript/esm
  4. json
  5. webassembly/sync
  6. webassembly/async
  7. asset

createGenerator

HookMap<SyncBailHook>

在创建 Generator 实例之前调用。generatorOptionsmodule.parser 中对应 identifier 的选项,或一个空对象。

  • Hook 参数:identifier

  • 回调参数:generatorOptions

generator

HookMap<SyncHook>

在创建 Generator 实例之后触发。

  • Hook 参数:identifier

  • 回调参数:generator generatorOptions

可能的默认 identifier:

  1. json
  2. webassembly/sync
  3. webassembly/async
  4. asset
  5. asset/source
  6. asset/resource
  7. asset/inline
  8. asset/bytes

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。