Rspack 的主要编译逻辑在 Rust 端运行。出于稳定性、性能和架构等因素,使用钩子时,Rust 端编译对象在传输到 JavaScript 端后,对这些对象的修改不会同步到 Rust 端。因此,大多数钩子是“只读”的。
buildModule在模块构建开始之前触发。
SyncHook<[Module]>Module: 模块实例executeModule如果存在编译时执行模块,此钩子将在执行它们时被调用。
SyncHook<[ExecuteModuleArgument, ExecuteModuleContext]>ExecuteModuleArgument: 编译时执行模块的参数ExecuteModuleContext: 编译时执行模块的上下文succeedModule模块构建成功时执行。
SyncHook<[Module]>Module: 模块实例finishModules所有模块都已成功构建且无错误时调用。
AsyncSeriesHook<[Module[]]>Module[]: 模块实例列表seal编译停止接受新模块并开始优化模块时调用。
SyncHook<[]>optimizeModules在模块优化阶段开始时调用。
SyncBailHook<[Module[]]>Module[]: 模块实例列表afterOptimizeModules模块优化完成后调用。
SyncBailHook<[Module[]]>Module[]: 模块实例列表optimizeTree优化依赖树之前调用。
AsyncSeriesHook<[Chunk[], Module[]]>Chunk[]: 块实例列表Module[]: 模块实例列表optimizeChunkModules树优化后调用,在块模块优化开始时。
AsyncSeriesBailHook<[Chunk[], Module[]]>Chunk[]: 块实例列表Module[]: 模块实例列表additionalTreeRuntimeRequirements树运行时需求收集完成后调用。
SyncHook<[Chunk, Set<RuntimeGlobals>]>Chunk: 块实例Set<RuntimeGlobals>: 运行时需求通过修改运行时需求集,可以在这里添加额外的内置运行时模块。
runtimeRequirementInTree在将运行时模块添加到编译时调用。
HookMap<SyncBailHook<[Chunk, Set<RuntimeGlobals>]>>Chunk: 块实例Set<RuntimeGlobals>: 运行时需求可以通过修改运行时需求集或调用 compilation.addRuntimeModule 添加自定义运行时模块来在这里添加额外的内置运行时模块。
runtimeModule运行时模块被添加到编译后调用。
SyncHook<[RuntimeModule, Chunk]>RuntimeModule: 运行时模块实例Chunk: 块实例可以通过其 source 属性修改此运行时模块的生成代码。
processAssets在发出之前处理资产。
AsyncSeriesHook<Assets>name: string — 插件的名称stage: Stage — 要插入的阶段(请参见下面的 处理资产阶段)Assets: Record<string, Source>: 一个普通对象,其中键是资产的路径名,值是资产的数据,由 Source 表示。PROCESS_ASSETS_STAGE_ADDITIONAL 阶段发出一个新的资产以下是支持的阶段列表。Rspack 将按从上到下的顺序依次执行这些阶段。请根据您需要执行的操作选择合适的阶段。
PROCESS_ASSETS_STAGE_ADDITIONAL — 向编译中添加额外的资产。PROCESS_ASSETS_STAGE_PRE_PROCESS — 对资产进行基本预处理。PROCESS_ASSETS_STAGE_DERIVED — 从现有资产派生新资产。PROCESS_ASSETS_STAGE_ADDITIONS — 向现有资产添加额外的部分,例如横幅或初始化代码。PROCESS_ASSETS_STAGE_OPTIMIZE — 以一般方式优化现有资产。PROCESS_ASSETS_STAGE_OPTIMIZE_COUNT — 优化现有资产的数量,例如通过合并它们。PROCESS_ASSETS_STAGE_OPTIMIZE_COMPATIBILITY — 优化现有资产的兼容性,例如添加 polyfills 或供应商前缀。PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE — 优化现有资产的大小,例如通过最小化或省略空白。PROCESS_ASSETS_STAGE_DEV_TOOLING — 向资产添加开发工具,例如通过提取源映射。PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE — 通过将资产内联到其他资产中来优化现有资产的数量。PROCESS_ASSETS_STAGE_SUMMARIZE — 总结现有资产列表。PROCESS_ASSETS_STAGE_OPTIMIZE_HASH — 优化资产的哈希值,例如通过生成资产内容的实际哈希值。PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER — 优化现有资产的传输,例如通过准备压缩(gzip)文件作为单独的资产。PROCESS_ASSETS_STAGE_ANALYSE — 分析现有资产。PROCESS_ASSETS_STAGE_REPORT — 创建用于报告目的的资产。afterProcessAssets在 processAssets 钩子无错误完成之后调用。
SyncHook<Assets>Assets: Record<string, Source>: 资产实例列表afterSeal密封阶段后调用。
AsyncSeriesHook<[]>chunkHash触发以发出每个块的哈希值。
SyncHook<[Chunk, Hash]>Chunk: 块实例Hash: 块哈希实例chunkAsset从块中添加资产到编译时触发。
SyncHook<[Chunk, string]>Chunk: 块实例string: 资产文件名childCompiler设置子编译器后执行。
SyncHook<[Compiler, string, number]>Compiler: 子编译器实例string: 子编译器名称number: 子编译器索引statsPreset此钩子类似于在使用预设时触发的动作列表。它接受一个选项对象。当插件管理预设时,它应该谨慎地更改此对象中的设置,而不要替换现有设置。
SyncHook<[Partial<StatsOptions>, CreateStatsOptionsContext]>Partial<StatsOptions>:统计选项CreateStatsOptionsContext:统计上下文以下是一个说明性的插件示例
此插件确保对于预设"my-preset",如果all选项未定义,则默认值为true。
statsNormalize此钩子用于将选项对象转换为一致的格式,以便后续钩子可以轻松使用它。它还确保缺失的选项设置为其默认值。
SyncHook<[Partial<StatsOptions>, CreateStatsOptionsContext]>Partial<StatsOptions>:统计选项CreateStatsOptionsContext:统计上下文以下是一个说明性的插件示例
在此插件中,如果myOption缺失,则将其设置为[]。此外,它确保myOption始终是数组,即使它最初被定义为单个值。
statsFactory此钩子提供对特定选项的 StatsFactory 类的访问。
SyncHook<[StatsFactory, StatsOptions]>StatsFactory:统计工厂实例,有关更多详细信息,请参见统计工厂钩子StatsOptions:统计选项statsPrinter此钩子提供对特定选项的 StatsPrinter 类的访问。
SyncHook<[StatsPrinter, StatsOptions]>StatsPrinter:统计打印机实例,有关更多详细信息,请参见统计打印机钩子。StatsOptions:统计选项