本節內容源自以下連結的內容,並受 CC BY 4.0 授權條款約束。
如果沒有特別說明,以下內容可以視為基於原始內容進行修改和刪除的結果。
Rspack 將根據 mode
選擇適當的最佳化設定。您也可以透過 optimization
自訂設定。
'natural' | 'named' | 'deterministic'
選項 | 描述 |
---|---|
natural |
按照使用順序使用數字 ID。 |
named |
使用有意義、易於除錯的內容作為 ID。此選項在開發模式中預設啟用。 |
deterministic |
使用雜湊的模組識別碼作為 ID,以受益於長期快取。此選項在生產模式中預設啟用。 |
'named' | 'deterministic'
選項 | 描述 |
---|---|
'named' |
可讀的 ID,以便更好地除錯。此選項在開發模式中預設啟用 |
'deterministic' |
簡短的數字 ID,在編譯之間不會變更。適合長期快取。此選項在生產模式中預設啟用。 |
是否最小化套件。
boolean
true
是否合併包含相同模組的區塊。將 optimization.mergeDuplicateChunks 設定為 false 將停用此最佳化。
Array<Plugin>
[new SwcJsMinimizerRspackPlugin(), new LightningCssMinimizerRspackPlugin()]
自訂最小化器。預設情況下,會使用 rspack.SwcJsMinimizerRspackPlugin
和 rspack.LightningCssMinimizerRspackPlugin
。當指定 optimization.minimizer
時,將停用預設最小化器。
使用具有自訂選項的內建最小化器
boolean
true
移除編譯中產生的空區塊。
boolean | string | ((entrypoint: { name: string }) => string)
false
用於控制如何產生運行時程式碼塊。
設定為 true
或 'multiple'
將為每個入口點新增一個僅包含運行時的額外程式碼塊。
設定為 'single'
將把所有入口點的運行時程式碼提取到一個單獨的程式碼塊中。
在資源處理完成後,新增額外的雜湊編譯步驟,以取得正確的資源內容雜湊值。此功能在生產模式下預設啟用。
如果 realContentHash 設定為 false,將使用內部數據計算雜湊值,在某些情況下,即使資源相同,雜湊值也可能會改變。
false | object
Rspack 支援使用 optimization.splitChunks
配置項來分割程式碼塊。
動態導入的模組預設會啟用此功能。
若要關閉此功能,請將其設定為 false
。
請參閱 SplitChunksPlugin 頁面,了解設定此行為的可用選項。
告知 Rspack 辨識 package.json 或規則中的 sideEffects 標誌,以便在未使用的匯出時跳過標記為不包含副作用的模組。
請注意,sideEffects
應位於 npm 模組的 package.json
檔案中,並不表示您需要在自己專案的 package.json
中將 sideEffects
設定為 false
,因為該專案會需要該 npm 模組。
optimization.sideEffects
依賴於 optimization.providedExports
啟用。此依賴關係會增加建置時間,但由於程式碼生成減少,移除模組對效能有正面的影響。此優化的效果取決於您的程式碼庫,您可以嘗試看看是否能提升效能。
如果您只想讓 Rspack 使用手動的 sideEffects
標誌(透過 package.json
和 module.rule.sideEffects
),而不分析原始碼
預設情況下,在非生產建置中使用 'flag'
值。
當 optimization.sideEffects
為 true 時,Rspack 也會將僅包含無副作用語句的模組標記為無副作用。
boolean
true
啟用後,Rspack 將分析模組提供的匯出,包括重新匯出的模組。當匯入引用不存在匯出的成員時,將會發出警告或錯誤。預設情況下,optimization.providedExports
是啟用的。此分析將增加建置時間。您可以考慮在開發模式下停用此設定。停用此設定可能會導致與執行時循環依賴相關的錯誤,如 SideEffects 章節所述。
告知 Rspack 決定每個模組的已使用匯出。這取決於 optimization.providedExports
。optimization.usedExports
收集的資訊將用於其他最佳化或程式碼生成,例如,不會為未使用的匯出生成匯出,當所有用法都相容時,匯出名稱會被縮減為單一字元識別符號。縮減器的無效程式碼消除功能將會受益於此,並可移除未使用的匯出。
若要選擇退出每個執行時的已使用匯出分析
optimization.mangleExports
允許控制匯出名稱的縮減。
支援下列值
選項 | 描述 |
---|---|
'named' | 使用有意義、易於除錯的內容作為 ID。此選項在開發模式下預設啟用 |
'deterministic' | 使用雜湊模組識別符號作為 ID,以從長期快取中獲益。此選項在生產模式下預設啟用 |
true | 與 'deterministic' 相同 |
false | 保留原始名稱。適用於可讀性和除錯。 |
optimization.innerGraph
告知 Rspack 是否執行更詳細的變數賦值分析。這有助於 Rspack 識別未使用的模組匯出,從而減少綑綁輸出的檔案大小。
例如
在這裡,我們將 value
賦值給 value2
。value2
和 value
都分別在函式 f2
和 f1
中存取,但是這些函式沒有被呼叫,因此實際上未使用 value2
和 value
,因此可以移除 value
的匯入。
告知 Rspack 尋找可以安全地串連到單一模組中的模組圖片段。取決於 optimization.providedExports 和 optimization.usedExports。預設情況下,optimization.concatenateModules
在 production
模式下啟用,否則停用。
boolean | string
false
告知 Rspack 將 process.env.NODE_ENV
設定為給定的字串值。除非設定為 false,否則 optimization.nodeEnv
會使用 DefinePlugin。如果已設定,optimization.nodeEnv
預設 為 mode,否則會回退到 'production'
。
可能的值
process.env.NODE_ENV
設定為的值。process.env.NODE_ENV
的值。當 mode 設定為 'none'
時,optimization.nodeEnv
預設為 false
。
當編譯時發生錯誤時,使用 optimization.emitOnErrors
發出資源。這確保了會發出錯誤資源。嚴重錯誤會被發出到生成的程式碼中,並會在執行時導致錯誤。