Rspack 主要编译逻辑运行在 Rust 侧。出于稳定性、性能、架构等因素,在使用钩子时 Rust 侧编译对象传输到 JavaScript 侧后,对 JavaScript 侧的修改不会被同步到 Rust 侧。因此绝大部分钩子为“只读”。
buildModule在模块被构建之前调用。
SyncHook<[Module]>Module:模块实例executeModule若存在编译期执行模块,将在模块被执行时调用。
SyncHook<[ExecuteModuleArgument, ExecuteModuleContext]>ExecuteModuleArgument:模块运行参数ExecuteModuleContext:模块运行上下文succeedModule在模块成功构建后调用。
SyncHook<[Module]>Module:模块实例finishModules当所有模块都没有错误地构建完成时调用。
AsyncSeriesHook<[Module[]]>Module[]:所有模块列表optimizeModules在模块优化阶段开始时调用。
SyncBailHook<[Module[]]>Module[]:所有模块列表afterOptimizeModules在模块优化完成之后调用。
SyncBailHook<[Module[]]>Module[]:所有模块列表optimizeTree在优化依赖树之前调用。
AsyncSeriesHook<[Chunk[], Module[]]>Chunk[]:Chunk 列表:Module[]:模块列表optimizeChunkModules在树优化之后,chunk 模块优化开始时调用。
AsyncSeriesBailHook<[Chunk[], Module[]]>Chunk[]:Chunk 列表:Module[]:模块列表additionalTreeRuntimeRequirements在树运行时依赖计算完成后调用。
SyncHook<[Chunk, Set<RuntimeGlobals>]>Chunk:Chunk 实例Set<RuntimeGlobals>:运行时依赖runtimeModule在运行时模块被添加后调用。
SyncHook<[RuntimeModule, Chunk]>RuntimeModule:运行时模块Chunk:Chunk 实例processAssets在产物输出之前进行修改产物。
AsyncSeriesHook<Assets>Assets:产物资源映射表afterProcessAssets在 processAssets hook 无错误执行后调用。
SyncHook<Assets>Assets:产物资源映射表afterSeal在 seal 阶段结束后调用。
AsyncSeriesHook<[]>chunkHash触发来为每个 chunk 生成 hash。
SyncHook<[Chunk, Hash]>Chunk:Chunk 实例Hash:Chunk 哈希实例chunkAsset一个 chunk 中的一个 asset 被添加到 compilation 时调用。
SyncHook<[Chunk, string]>Chunk:Chunk 实例string:产物文件名childCompiler创建子 compiler 之后调用。
SyncHook<[Compiler, string, number]>Compiler:子编译实例:string:子编译名称number:子编译索引statsPreset当使用预设 stats 配置时触发。接收一个 stats 配置对象,当插件管理 stats 预设配置时,它应当在配置对象上仔细地修改,而非直接替换整个配置对象。
SyncHook<[Partial<StatsOptions>, CreateStatsOptionsContext]>Partial<StatsOptions>:Stats 配置CreateStatsOptionsContext:Stats 上下文以如下插件为例:
该插件确保对于预设 "my-preset",如果 all 选项未定义,则默认为 true。
statsNormalize此钩子用于将选项对象转换为便于后续钩子使用的格式。它还确保缺失的选项被设置为默认值。
SyncHook<[Partial<StatsOptions>, CreateStatsOptionsContext]>Partial<StatsOptions>:Stats 配置CreateStatsOptionsContext:Stats 上下文以如下插件为例:
在这个插件中,如果 myOption 缺失,会将其设置为 []。此外,它确保 myOption 始终是一个数组,即使它最初被定义为单个值。
statsFactory此钩子提供了对 StatsFactory 的访问,以调用其钩子。该类用于构造 Stats 对象。
SyncHook<[StatsFactory, StatsOptions]>StatsFactory:Stats 工厂实例,详见 Stats Factory 钩子StatsOptions:Stats 配置statsPrinter此钩子提供了对 StatsPrinter 的访问,以调用其钩子。该类用于打印 Stats 信息。
SyncHook<[StatsPrinter, StatsOptions]>StatsPrinter:Stats 打印实例,详见 Stats Printer 钩子StatsOptions:Stats 配置