## 部署大戰歷史 [webpack](https://webpack.js.org/):我們現在在用的,很慢 [esBuild](https://esbuild.github.io/):兩年前出現,比webpack快5倍 [vite](https://vite.dev/):尤雨溪開發,比esBuild更快 [SWC](https://swc.rs/):韓國人(後來這個人被Vercel吸收)開發,把webpack用Rust重寫 [turbopack](https://nextjs.org/docs/app/api-reference/turbopack):基於SWC的基礎開發,目前dev在stable版,build在Beta版,應該沒有vite快 ### Next的歷程 - Next先整合SWC,因為轉換比較無痛 - 接著以SWC為基礎開發turbopack (目前跟Vite比速度) - turbopack在Next 15時dev為stable版 - July 14th 2025 官方部落格 [turbopack build](https://nextjs.org/blog/next-15-4) 進Beta版 ![截圖 2025-07-21 上午11.46.35](https://hackmd.io/_uploads/BysmuEsUge.png) 在這之前不推薦用,因為會有build失敗,但現在可以[100% build 成功](https://areweturboyet.com/) ### Turbopack優點 啟用 Next.js 的 Turbopack 有以下幾個主要好處: - 極速開發體驗:Turbopack 能大幅提升本地開發的速度,根據官方數據,大型專案的本地伺服器啟動速度可提升約 76%,程式碼修改後的 Fast Refresh 速度提升高達 96%,初始路由編譯速度也有 45% 以上的提升。 - 單一編譯器設計:Turbopack 採用單一編譯器來處理前後端環境,減少多重編譯器協調的開銷,提高穩定性與可維護性。 - 高效增量編譯:透過並行運算與函式級快取,只會針對實際變動的部分重新編譯,大幅降低大型專案的等待時間。 - 更貼近生產環境:開發環境的建構結果與生產環境更一致,有助於提早發現潛在問題。 - 進階追蹤與除錯:內建追蹤工具可協助分析編譯效能瓶頸,方便團隊持續優化專案效能。 - 支援最新技術:完整支援 React Server Components、Fast Refresh、CSS Modules、PostCSS 等現代前端技術。 總結來說,啟用 Turbopack 能顯著提升開發效率、縮短回饋迴圈,並讓大型專案的開發體驗更順暢,是 Next.js 推薦的新一代建構工具。 ### Jude PR 我們目前連dev都不能用,這隻[PR](https://github.com/HighfiveAILab/high5-turbo-platform/pull/84/files)為開啟Turbopack需要的設定 - 我們的舊CSS模組需要吃靜態檔案很多background-image(會因Turbopack 的 SVGR plugin 導致讀取到的是元件而不是網址,導致失敗),目前Dev可能會有圖片消失的問題 - [SVGR](https://react-svgr.com/)優點就是會將SVG圖檔轉換為React component (像是[Lucide-icon](https://lucide.dev/icons/octagon-x)),所有用到的地方都是共用同一個元件(業界標準熱門用法) - 目前我們只有dev用turbopack,build還是用webpack,所以只有dev mode圖檔會消失 ![截圖 2025-07-21 中午12.11.34](https://hackmd.io/_uploads/rk7Z0Vj8gx.png) ![截圖 2025-07-21 中午12.10.29](https://hackmd.io/_uploads/B1IapNj8eg.png) 吃不同的設定檔 #### Turbopack SVG 處理說明 已支援 Turbopack 開發模式,但有以下已知差異: **開發環境與生產環境差異**: - 開發環境中的 CSS background-image 中的 SVG 可能不顯示 - 這是可接受的權衡,因為生產環境完全正常 - 此狀態為 CSS Module 重構前的過渡狀態 **如需驗證 CSS 背景圖片**: ```bash pnpm build pnpm start ``` **SVG 使用指南**: - 作為 React 元件使用:直接 import,不需要 ?url - 作為圖片使用:使用 ?url 後綴,或考慮使用 next/image #### browser runtime AI MCP [browsertools](https://browsertools.agentdesk.ai/installation):讓AI能偵測runtime error跟log,搭配Chrome plug-ing使用 但因為還沒發佈到google store,所以安裝較麻煩