繁體中文English
jason's blog關於網頁標準、瀏覽器與前端開發的觀察筆記

文章分類: 前端工具

Vite 8 為什麼改用 Rolldown

Vite 8 換用 Rolldown 的原因,以及換掉建置核心時真正要注意的相容性。

發布 2026/03/10

我看到 Vite 8 要把 production build 的核心換成 Rolldown 時,第一個感覺不是期待,是替 plugin 生態捏一把冷汗。底層換成 Rust、速度變快當然很好聽,但用過 build tool 的人都知道,最可怕的不是慢那幾秒,而是某個三年前寫的 plugin 突然只在 production 壞掉。

Vite 開發環境一直很快,但正式建置長期使用 Rollup。Vite 8 把核心逐步換成 Rolldown,希望開發和 production build 能共用更多基礎,也減少兩套流程之間的差異。

Rolldown 可以先理解成「用 Rust 打造、朝 Rollup 相容方向前進的 bundler」。對一般使用者來說,日常指令沒有因此全部改掉,多數 Vite plugin 也希望能繼續使用。

升級時真正需要注意的是比較少見的 plugin、客製 build 設定和依賴 bundler 細節的程式。如果專案設定單純,這次改變比較像 Vite 在底層換了一顆新引擎。

為什麼 Vite 想把工具整合起來?

一套工具負責開發、另一套負責正式建置,最大的問題不只速度,而是行為可能不完全相同。某個 import 在 dev 正常,build 才出錯,查起來特別煩。Rolldown 的長期目標之一,就是讓兩邊共用更多解析和轉換邏輯。

Rust 帶來的效能很吸引人,但我覺得相容性反而更值得關注。Vite 之所以普及,靠的是大量 Rollup/Vite plugin。新核心如果只能跑很快,卻讓常用 plugin 失效,就不算真的接班。因此 Vite 8 的故事不只是「Rust 比 JavaScript 快」,而是如何在換引擎時保住既有生態。

升級時我會把 plugin 分成三組:官方維護、社群常用,以及公司內部自己寫的。前兩組先看相容清單,最後一組則要直接跑 fixture,比較 dev 與 build 的輸出。真正容易踩雷的通常不是 React plugin,而是多年前為特殊檔案格式寫下、之後沒人碰過的那一支。

如果 build 速度真的改善,我也不會立刻把所有 cache 拿掉。先保留一段時間觀察 CI 波動,再簡化設定;否則同時換 bundler、cache 和部署流程,快了不知道是哪一項,壞了也不知道從哪裡退。