前端建置 2026
2026 年前端建置避坑:
遠端 Mac 上 Vite/Webpack 建置時長對比與快取優化三步
2026.03.12
MacWww 技術團隊
約 8 分鐘閱讀
前端/全棧與網站運維、測試在遠端 Mac 上做 Web 建置與部署時,常遇建置耗時、冷建置拖慢 CI、快取未善用。本文提供對比表與三步快取優化,含常見建置卡頓與磁碟 I/O 排查,可直接套用。💻🚀
對比表 + 三步步驟
01 為什麼遠端 Mac 上建置時長會影響迭代效率
在遠端 Mac 上,每次完整建置都會疊加網路與磁碟延遲。冷建置過長拖慢 CI 與迭代;時間不穩定讓流水線難以預估。優化建置與快取複用可直接提升部署頻率與開發體驗。選擇 Vite 或 Webpack、以及快取與依賴的設定,會讓建置時間出現一倍以上差異。
- CI/CD:建置變慢成流水線瓶頸。
- 成本:租用 Mac 上多出的建置分鐘數轉成更高運算成本。
- 穩定性:快取與 node_modules 複用可降低變異。
02 Vite 與 Webpack 在遠端環境下的表現對比
下表為典型遠端 Mac(Mac Mini M4、SSD)上正式建置的對比。實際依專案而異;兩者皆可透過持久快取與複用 node_modules 獲益。
| 維度 | Vite(正式建置) | Webpack 5 |
|---|---|---|
| 冷建置(無快取) | 多為 30~60 秒(Rollup) | 多為 60~180 秒 |
| 增量/有快取 | 快;快取於 node_modules/.vite | 持久快取;較冷建置快約 2~5 倍 |
| node_modules I/O | 較輕(ESM 優先) | 較重(讀取較多) |
| 設定複雜度 | 開箱即用較低 | 較高;須手動啟用快取 |
小結
Vite 正式建置冷啟動較快、快取路徑簡單;Webpack 5 持久快取可拉近差距。兩者都建議搭配下文三步優化。
03 建置快取與 node_modules 複用策略
在遠端 Mac 上應保留建置快取與 node_modules,不要每次任務都刪除。使用穩定 Node(.nvmrc)與 lockfile,讓安裝可重現且可在 CI 快取。啟用並持久化後,建置時間常可縮短二至五倍。
- 快取目錄:Vite:
node_modules/.vite;Webpack:node_modules/.cache/webpack。CI 持久化(快取鍵:lockfile 雜湊)。 - node_modules:lockfile 未變時從 CI 快取還原;僅變更時完整安裝。
- 單機:專用租用 Mac 上建置間保留 node_modules 與快取以最大化複用。
04 三步快取優化與可執行設定
在遠端 Mac 上對 Vite 與 Webpack 套用以下三步,可縮短建置並穩定執行。
- 步驟一 — 啟用並持久化建置快取。Vite:
build.cacheDir已設定(預設node_modules/.vite),勿每次清空。Webpack:cache: { type: 'filesystem' }與可選cacheDirectory;除錯外勿用--no-cache。 - 步驟二 — 複用 node_modules 與 lockfile。鎖定 Node(.nvmrc 如
20)。CI 以 lockfile 雜湊快取node_modules;Mac 上避免每次建置前rm -rf node_modules。 - 步驟三 — 調整磁碟 I/O 與並行度。遠端 Mac 用 SSD。I/O 瓶頸時略降 Webpack
parallelism或 Vite 工作執行緒;用build --profile或 Webpack stats 找瓶頸。
設定範例(Webpack 5)
cache: { type: 'filesystem', cacheDirectory: path.resolve(__dirname, 'node_modules/.cache/webpack') }。Vite 沿用預設或設 build.cacheDir。
05 常見建置卡頓與磁碟 I/O 排查
建置卡住或明顯變慢時,依序檢查:磁碟與記憶體常是主因;先用 Webpack stats 或 Vite 建置輸出做效能分析,再調整快取或並行度。
- 磁碟 I/O:
iostat或活動監視器;磁碟飽和時減少 worker 或將快取移至更快磁碟。 - 記憶體:建置至少 8 GB RAM;遠端 Mac 上 swap 會明顯拖慢建置。
- 冷快取:清空快取或新裝 node_modules 後首次較慢,作為基準比較後續。
- 網路:建置從網路拉資源時延遲累加;改為本地或快取解析。
先做效能分析再調參:用 Webpack bundle analyzer 或 Vite 建置輸出看時間分佈,再套用三步優化與 I/O 檢查。