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
— 最佳化現有資產的相容性,例如新增 polyfill 或供應商前綴。PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE
— 優化現有資源的大小,例如透過最小化或省略空白字元。PROCESS_ASSETS_STAGE_DEV_TOOLING
— 將開發工具新增至資源,例如透過提取原始碼對應 (source map)。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 hook 完成且沒有錯誤後呼叫。
SyncHook<Assets>
Assets: Record<string, Source>
:資源實例列表afterSeal
在 seal 階段之後呼叫。
AsyncSeriesHook<[]>
chunkHash
觸發以發出每個 chunk 的雜湊值。
SyncHook<[Chunk, Hash]>
Chunk
:區塊實例Hash
:chunk 雜湊實例chunkAsset
當來自 chunk 的資源被新增到編譯時觸發。
SyncHook<[Chunk, string]>
Chunk
:區塊實例string
:資源檔案名稱childCompiler
在設定子編譯器後執行。
SyncHook<[Compiler, string, number]>
Compiler
:子編譯器實例string
:子編譯器名稱number
:子編譯器索引statsPreset
這個 hook 就像當使用 preset 時會觸發的一系列動作。它會接收一個 options 物件。當一個外掛程式管理 preset 時,它應該仔細地變更這個物件中的設定,而不要取代現有的設定。
SyncHook<[Partial<StatsOptions>, CreateStatsOptionsContext]>
Partial<StatsOptions>
:統計資料選項CreateStatsOptionsContext
:統計資料內容這是一個說明用的外掛程式範例
這個外掛程式確保對於 preset "my-preset"
,如果 all
選項未定義,則預設為 true
。
statsNormalize
這個 hook 用於將 options 物件轉換為一致的格式,以便後續 hook 輕鬆使用。它還確保遺失的選項會設定為其預設值。
SyncHook<[Partial<StatsOptions>, CreateStatsOptionsContext]>
Partial<StatsOptions>
:統計資料選項CreateStatsOptionsContext
:統計資料內容這是一個說明用的外掛程式範例
在這個外掛程式中,如果遺失了 myOption
,則會將其設定為 []
。此外,它還確保 myOption
始終是一個陣列,即使它最初定義為單一值。
statsFactory
這個 hook 提供對特定選項的 StatsFactory 類別的存取權。
SyncHook<[StatsFactory, StatsOptions]>
StatsFactory
:統計資料工廠實例,詳情請參閱統計資料工廠 HooksStatsOptions
:統計資料選項statsPrinter
這個 hook 提供對特定選項的 StatsPrinter 類別的存取權。
SyncHook<[StatsPrinter, StatsOptions]>
StatsPrinter
:統計資料印表機實例,詳情請參閱統計資料印表機 Hooks。StatsOptions
:統計資料選項