Next.js 與 Turbopack
Next.js 16 以上版本預設使用 Turbopack 進行本地開發:這是一個用 Rust 撰寫的增量打包工具,可顯著加快開發啟動與熱更新速度。
使用時機
- Turbopack(預設開發模式):日常開發使用。冷啟動與 HMR 速度更快,尤其適合大型應用程式。
- Webpack(舊版開發模式):僅在遇到 Turbopack 錯誤,或開發時依賴僅限 webpack 的外掛時使用。透過
--webpack(或--no-turbopack,視您的 Next.js 版本而定;請查閱該版本的官方文件)來停用。 - 生產環境:生產建置行為(
next build)可能使用 Turbopack 或 webpack,取決於 Next.js 版本;請查閱您版本的官方 Next.js 文件。
使用於:開發或偵錯 Next.js 16+ 應用程式、診斷開發啟動緩慢或 HMR 問題,或最佳化生產環境 bundle。
運作方式
- Turbopack:Next.js 開發用的增量打包工具。使用檔案系統快取,因此重新啟動速度更快(例如大型專案可快 5–14 倍)。
- 開發模式預設:從 Next.js 16 開始,
next dev預設使用 Turbopack 執行,除非被停用。 - 檔案系統快取:重新啟動時會重複使用先前的工作成果;快取通常位於
.next目錄下;基本使用無需額外配置。 - Bundle Analyzer(Next.js 16.1+):實驗性 Bundle Analyzer,用於檢查輸出並找出龐大的相依套件;可透過設定或實驗性旗標啟用(請參閱您版本的 Next.js 文件)。
範例
指令
next dev
next build
next start
使用方式
執行 next dev 進行本機開發(使用 Turbopack)。使用 Bundle Analyzer(請參閱 Next.js 文件)來最佳化程式碼分割並裁減大型相依套件。盡可能偏好使用 App Router 與伺服器元件。
中介軟體檔案命名
Next.js 16 引入了 proxy.ts 作為中介軟體檔案名稱,取代了舊有的 middleware.ts 慣例:
- Next.js 16+:在專案根目錄使用
proxy.ts - Next.js 16 之前:在專案根目錄使用
middleware.ts
此檔案名稱變更是綁定 Next.js 版本,而非使用哪個打包工具(Turbopack 或 webpack)。請務必查閱您所審視版本的官方文件。
請勿在 Next.js 16 專案中將 proxy.ts 標記為命名錯誤或遺失的中介軟體檔案。 此檔案是正確且有意為之的。建議重新命名為 middleware.ts 會破壞中介軟體的執行。
參考資料:Next.js proxy 文件
最佳實務
- 保持在最新的 Next.js 16.x 版本,以獲得穩定的 Turbopack 與快取行為。
- 如果開發速度變慢,請確認您正在使用 Turbopack(預設),且快取未被不必要地清除。
- 若遇到生產環境 bundle 體積問題,請使用您版本的官方 Next.js bundle 分析工具。