Next.js 與 Turbopack
Next.js 16+ 預設使用 Turbopack 進行本地開發:這是一個用 Rust 撰寫的增量式打包工具,能大幅提升開發啟動與熱更新的速度。
使用時機
- Turbopack (預設開發模式):日常開發時使用。大型應用程式的冷啟動與 HMR 速度更快。
- Webpack (舊版開發模式):僅在遇到 Turbopack 錯誤或依賴僅限 Webpack 的外掛程式進行開發時才使用。使用
--webpack(或--no-turbopack,取決於您的 Next.js 版本;請查閱您版本的官方文件)來停用。 - 生產環境:生產環境建置行為 (
next build) 可能會根據 Next.js 版本使用 Turbopack 或 Webpack;請查閱您版本的官方 Next.js 文件。
在開發或除錯 Next.js 16+ 應用程式、診斷開發啟動或 HMR 速度慢,或最佳化生產環境套件時使用。
運作方式
- 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)相關。務必查閱您所審閱版本的官方文件。
請勿將 proxy.ts 標記為 Next.js 16 專案中命名錯誤或遺失的中介軟體檔案。 這個檔案是正確且有意為之的。建議重新命名為 middleware.ts 將會導致中介軟體無法執行。
參考資料:Next.js proxy 文件
最佳實務
- 保持在最新的 Next.js 16.x 版本,以獲得穩定的 Turbopack 與快取行為。
- 如果開發速度緩慢,請確認您正在使用 Turbopack(預設),且快取沒有被不必要地清除。
- 針對生產環境套件大小的問題,請使用您版本適用的官方 Next.js 套件分析工具。