Turbopack
Turbopack (beta) 是一個針對 JavaScript 和 TypeScript 優化的增量打包工具,使用 Rust 編寫,並內建於 Next.js 中。
使用方式
Turbopack 可在 Next.js 的 pages
和 app
目錄中使用,以加速本地開發。要啟用 Turbopack,請在執行 Next.js 開發伺服器時使用 --turbo
標誌。
支援的功能
Next.js 中的 Turbopack 對大多數使用者來說無需配置,並可針對進階使用情境進行擴展。要了解更多關於 Turbopack 目前支援的功能,請查看 API 參考文件。
不支援的功能
Turbopack 目前僅支援 next dev
,不支援 next build
。我們正在努力實現對建置的支援,以邁向穩定版。
以下功能目前不支援:
- 在
next.config.js
中的webpack()
配置- Turbopack 取代了 Webpack,這意味著不支援 webpack 配置。
- 要配置 Turbopack,請參閱文件。
- Turbopack 支援部分 Webpack 載入器。
- Babel (
.babelrc
)- Turbopack 使用 SWC 編譯器進行所有轉譯和優化。這意味著預設不包含 Babel。
- 如果您有
.babelrc
檔案,可能不再需要它,因為 Next.js 包含了常見的 Babel 插件作為可啟用的 SWC 轉換。您可以在 編譯器文件 中了解更多。 - 如果確認您的特定使用情境未被涵蓋,仍需要使用 Babel,可以利用 Turbopack 的 自訂 webpack 載入器支援 來包含
babel-loader
。
- 在 App Router 中自動建立根佈局 (root layout)。
- 目前不支援此行為,因為它會變更輸入檔案,相反地,系統會顯示錯誤提示您手動在所需位置新增根佈局。
@next/font
(舊版字體支援)。@next/font
已被棄用,推薦使用next/font
。next/font
在 Turbopack 中完全支援。
new Worker('file', import.meta.url)
。- 我們計劃在未來實現此功能。
- Relay 轉換
- 我們計劃在未來實現此功能。
experimental.nextScriptWorkers
- 我們計劃在未來實現此功能。
- AMP。
- 目前不計劃在 Next.js 中使用 Turbopack 支援 AMP。
- Yarn PnP
- 目前不計劃在 Next.js 中使用 Turbopack 支援 Yarn PnP。
experimental.urlImports
- 目前不計劃在 Next.js 中使用 Turbopack 支援
experimental.urlImports
。
- 目前不計劃在 Next.js 中使用 Turbopack 支援
生成追蹤檔案
追蹤檔案允許 Next.js 團隊調查並改善效能指標和記憶體使用情況。要生成追蹤檔案,請在 next dev --turbo
命令後附加 NEXT_TURBOPACK_TRACING=1
,這將生成一個 .next/trace.log
檔案。
當報告與 Turbopack 效能和記憶體使用相關的問題時,請在您的 GitHub 問題中包含追蹤檔案。