Turbopack

Turbopack (beta) 是一個針對 JavaScript 和 TypeScript 優化的增量打包工具,使用 Rust 編寫,並內建於 Next.js 中。

使用方式

Turbopack 可在 Next.js 的 pagesapp 目錄中使用,以加速本地開發。要啟用 Turbopack,請在執行 Next.js 開發伺服器時使用 --turbo 標誌。

package.json
{
  "scripts": {
    "dev": "next dev --turbo",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  }
}

支援的功能

Next.js 中的 Turbopack 對大多數使用者來說無需配置,並可針對進階使用情境進行擴展。要了解更多關於 Turbopack 目前支援的功能,請查看 API 參考文件

不支援的功能

Turbopack 目前僅支援 next dev,不支援 next build。我們正在努力實現對建置的支援,以邁向穩定版。

以下功能目前不支援:

  • next.config.js 中的 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/fontnext/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 團隊調查並改善效能指標和記憶體使用情況。要生成追蹤檔案,請在 next dev --turbo 命令後附加 NEXT_TURBOPACK_TRACING=1,這將生成一個 .next/trace.log 檔案。

當報告與 Turbopack 效能和記憶體使用相關的問題時,請在您的 GitHub 問題中包含追蹤檔案。

On this page