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 配置