Rspack 的配置是基於 webpack 設計的,讓您可以輕鬆地將您的專案從 webpack 遷移到 Rspack。
本文檔主要針對使用 webpack 5 的專案。由於 Rspack 的 API 和配置與 webpack 5 對齊。對於未使用 webpack 5 的專案,還有其他遷移指南可供參考
在您的專案目錄中,將 Rspack 安裝為 devDependencies
現在您可以從您的專案中移除與 webpack 相關的依賴項
在某些情況下,您仍然需要保留 webpack
作為開發依賴項,例如在使用 vue-loader 或 fork-ts-checker-webpack-plugin 時。
這是因為這些插件直接 import
webpack 的子路徑並與 webpack 耦合。如果您遇到此問題,您可以向這些插件的維護者提供回饋,詢問他們是否可以使 webpack
成為可選的依賴項。
更新您的建置腳本以使用 Rspack 而不是 webpack
將 webpack.config.js
檔案重新命名為 rspack.config.js
。
Rspack 命令可以使用 -c
或 --config
來指定設定檔,與 webpack 命令類似。但是,與 webpack 不同,如果沒有明確指定設定檔,Rspack 預設使用 rspack.config.js
。
Rspack 目前不支援所有 webpack 設定,某些設定可能會影響建置輸出。為了確保建置輸出的正確性,Rspack 預設啟用對設定的嚴格驗證。但是,Rspack 也提供了一種寬鬆模式,以便輕鬆進行漸進式遷移。您可以通過設定 RSPACK_CONFIG_VALIDATE
環境變數來啟用它
Rspack 正在積極開發實作 webpack 即將推出的功能,因此某些設定預設值與 webpack 5 不同,如下所示
設定 | webpack 預設值 | Rspack 預設值 |
---|---|---|
node.global | true | 'warn' |
node.__filename | 'mock' | 'warn-mock' |
node.__dirname | 'mock' | 'warn-mock' |
您可以參考設定 Rspack以查看 Rspack 支援的設定。
Rspack 已經實作了大部分 webpack 的內建插件,具有相同的名稱和設定參數,可以輕鬆替換。
例如,替換 DefinePlugin
請參閱與 Webpack 對齊的內建插件,以取得有關 Rspack 中支援的 webpack 插件的更多資訊。
Rspack 支援大多數 webpack 社群插件,並且還為某些目前不受支援的插件提供了替代解決方案。
請查看插件相容性,以取得有關 Rspack 與流行的 webpack 社群插件的相容性的更多資訊。
Rspack 的 loader 執行器與 webpack 的 loader 功能完全相容,支援大多數 webpack loaders。您可以直接使用現有的 loaders,無需任何變更。但是,為了達到最佳效能,請考慮遷移以下 loaders
使用 builtin:swc-loader
比 babel-loader
和外部的 swc-loader
提供更好的效能,因為它可以避免 JavaScript 和 Rust 之間的頻繁通訊。
如果您需要使用 Babel 插件的自訂轉換邏輯,您可以保留 babel-loader
,但建議將其使用限制在較少的文件中,以防止嚴重的效能下降。
Rspack 實作了 Webpack 5 的資源模組,使用資源模組取代 file-loader
、url-loader
和 raw-loader
,以獲得更好的效能。