Vite 8.0 釋出!
2026 年 3 月 12 日

我們很高興宣佈 Vite 8 的穩定版本正式釋出!Vite 剛誕生時,我們在兩個打包器上做出了務實的投注:使用 esbuild 來保證開發時的速度,使用 Rollup 來實現生產環境的最佳化構建。這個選擇讓我們受益多年。我們非常感謝 Rollup 和 esbuild 的維護者,沒有他們,Vite 無法取得今天的成功。如今,這一切整合為一個:Vite 8 搭載了 Rolldown,作為其單一、統一的、基於 Rust 的打包器,在保持完全外掛相容性的同時,構建速度提升了 10-30 倍。這是自 Vite 2 以來最重大的架構變革。
Vite 每週下載量已達 6500 萬次,生態系統隨著每次釋出不斷增長。為了幫助開發者在日益豐富的外掛生態中尋找工具,我們還推出了 registry.vite.dev,這是一個可搜尋的 Vite、Rolldown 和 Rollup 外掛目錄,每日從 npm 收集外掛資料。
快速連結
你可以透過 vite.new 線上體驗 Vite 8,或透過執行 pnpm create vite 在本地搭建 Vite 專案。檢視 入門指南 以獲取更多資訊。
我們誠邀你共同改進 Vite(加入 Vite 核心庫 1.2K+ 貢獻者的行列)、相關依賴項或生態系統中的外掛與專案。請檢視我們的 貢獻指南 以瞭解更多。參與貢獻的良好開端包括:分類 Issues、審查 PR、針對現有 Issue 提交測試 PR,以及在 Discussions 或 Vite Land 的 幫助論壇 中支援他人。如有疑問,歡迎加入我們的 Discord 社群,並在 #contributing 頻道與我們交流。
關注我們在 Bluesky、X 或 Mastodon 上的動態,保持更新並與其他 Vite 開發者建立聯絡。
由 Rolldown 驅動的 Vite
面臨的問題
自誕生之初,Vite 依靠兩個獨立的打包器來滿足不同需求:esbuild 負責開發時的快速編譯(依賴預打包和 TypeScript/JSX 轉換),帶來瞬時響應的開發體驗;Rollup 負責生產環境的打包、分塊和最佳化,其豐富的外掛 API 支撐起了整個 Vite 外掛生態。
這種“雙打包器”策略讓 Vite 穩定執行多年,讓我們能夠專注於開發者體驗和編排,而非重複造輪子。但它也帶來了權衡:兩套獨立的轉換流水線意味著兩套外掛系統,且需要大量的膠水程式碼來保持二者同步。隨著時間推移,不一致的模組處理邏輯累積,而在一個流水線中的任何修正都有可能導致另一個流水線出現差異。
解決方案
Rolldown 是由 VoidZero 團隊開發的基於 Rust 的打包器,旨在正面解決這些挑戰。它的設計基於三個核心目標:
- 效能:Rolldown 使用 Rust 編寫,具備原生速度。基準測試顯示,它比 Rollup 快 10-30 倍,達到與 esbuild 同等的效能水平。
- 相容性:Rolldown 支援與 Rollup 和 Vite 相同的外掛 API。大多數現有的 Vite 外掛可以在 Vite 8 中直接執行。
- 高階功能:單一的統一打包器解鎖了雙打包器架構下難以或無法實現的功能,包括全包模式 (full bundle mode)、更靈活的分塊策略、模組級持久化快取以及對 Module Federation 的支援。
走向穩定版的歷程
向 Rolldown 的遷移經過審慎規劃,由社群驅動。首先,我們釋出了一個獨立的 rolldown-vite 包作為技術預覽,允許早期採用者在不影響穩定版 Vite 的情況下測試整合。早期採用者的反饋極其寶貴,他們將整合應用於各種規模的真實程式碼庫中,暴露了許多我們在更廣泛釋出前得以解決的邊緣案例和相容性問題。我們還建立了一套專門的 CI 校驗機制,驗證關鍵的 Vite 外掛和框架對新打包器的支援情況,從而儘早捕獲迴歸問題並增強了遷移的信心。
2025 年 12 月,我們釋出了完全整合 Rolldown 的 Vite 8 beta。在 beta 期間,Rolldown 本身也從 beta 階段演進至釋出候選版本 (RC),在 Vite 社群的測試與反饋推動下持續改進。
真實世界效能
在 rolldown-vite 的預覽和 beta 階段,多家公司報告了生產環境構建時間的顯著降低:
- Linear:生產構建時間從 46 秒降至 6 秒
- Ramp:構建時間縮短 57%
- Mercedes-Benz.io:構建時間縮短多達 38%
- Beehiiv:構建時間縮短 64%
對於大型專案,這種提升尤為明顯。隨著 Rolldown 的持續演進,我們期待看到進一步的最佳化。
統一的工具鏈
隨著 Vite 8 的釋出,Vite 成為端到端工具鏈的入口,各團隊緊密協作:構建工具(Vite)、打包器(Rolldown)和編譯器(Oxc)。這種對齊確保了從解析、處理到轉換和壓縮,整個技術棧的行為保持一致。這也意味著我們可以隨著 JavaScript 的演進,快速採納新的語言規範。透過跨層級的深度整合,我們能夠追求此前無法實現的最佳化,例如利用 Oxc 的語義分析來提升 Rolldown 的 Tree-shaking 效果。
感謝社群
這一切離不開廣大社群的支援。我們向各框架團隊(SvelteKit、React Router、Storybook、Astro、Nuxt 等)表示誠摯感謝,他們儘早測試了 rolldown-vite,提交了詳細的 Bug 報告,並與我們合作解決了相容性問題。我們同樣感謝每一位參與 beta 測試、分享構建效率提升心得、以及反饋痛點以幫助我們改進的開發者。你們在真實專案中的遷移測試,使向 Rolldown 的過渡更加平滑、可靠。
Node.js 支援
Vite 8 要求 Node.js 20.19+ 或 22.12+,與 Vite 7 的要求一致。這些版本確保 Node.js 可以在無需標記的情況下支援 require(esm),使 Vite 能夠以純 ESM 格式釋出。
額外功能
除了 Rolldown 整合外,Vite 8 還包含多項顯著特性:
整合 Devtools:Vite 8 帶來了
devtools選項,可開啟 Vite Devtools,這是一款用於除錯和分析的開發者工具。Vite Devtools 能夠直接從開發伺服器提供對專案的深入洞察。內建 tsconfig
paths支援:開發者可以透過設定resolve.tsconfigPaths為true來啟用 TypeScript 路徑別名解析。該功能會帶來微小的效能開銷,因此預設不開啟。emitDecoratorMetadata支援:Vite 8 現在內建自動支援 TypeScript 的emitDecoratorMetadata選項,無需外部外掛。詳見 功能 頁面。Wasm SSR 支援:
.wasm?init匯入 現在可以在 SSR 環境中工作,將 Vite 的 WebAssembly 功能擴充套件到服務端渲染。瀏覽器控制檯轉發:Vite 8 可以將瀏覽器的控制檯日誌和錯誤轉發到開發伺服器終端。這對於使用編碼智慧體 (coding agents) 的場景特別有用,因為執行時客戶端錯誤現在可以直接在 CLI 輸出中看到。透過
server.forwardConsole啟用,當檢測到編碼智慧體時會自動啟用。
@vitejs/plugin-react v6
伴隨 Vite 8,我們釋出了 @vitejs/plugin-react v6。該外掛使用 Oxc 進行 React Refresh 轉換。Babel 不再是依賴項,安裝體積更小。
對於需要 React Compiler 的專案,v6 提供了一個 reactCompilerPreset 輔助工具,可與 @rolldown/plugin-babel 配合使用,允許你以顯式方式選擇性使用,而不會增加預設配置的負擔。
請參閱 釋出說明 獲取更多詳情。
注意,v5 版本在 Vite 8 中依然可用,因此你可以在升級 Vite 後再升級外掛。
展望未來
Rolldown 的整合為後續最佳化打開了大門。接下來我們正致力於:
全包模式 (Full Bundle Mode)(實驗性):該模式在開發期間對模組進行打包,類似於生產環境構建。初步測試顯示,開發伺服器啟動速度提升 3 倍,全量過載速度提升 40%,網路請求減少 10 倍。這對於未打包開發模式達到擴充套件瓶頸的大型專案尤為有效。
原生 AST 傳輸:允許 JavaScript 外掛以極小的序列化開銷訪問 Rust 產生的 AST,彌補 Rust 內部實現與 JS 外掛程式碼之間的效能差距。
原生 MagicString 轉換:啟用自定義轉換,其中邏輯位於 JavaScript,但字串處理計算在 Rust 中執行。
穩定 Environment API:我們正在努力使 Environment API 達到穩定狀態。生態系統已開始定期會議以更好地協作。
安裝體積
我們希望對 Vite 安裝體積的變化保持透明。Vite 8 本身比 Vite 7 大約增加 15 MB,主要來自兩個方面:
- ~10 MB 來自 lightningcss:此前作為可選的對等依賴,現在成為普通依賴,以便開箱即用提供更好的 CSS 壓縮。
- ~5 MB 來自 Rolldown:Rolldown 二進位制檔案比 esbuild + Rollup 更大,主要是因為優先考慮了速度而非體積的效能最佳化。
隨著 Rolldown 的成熟,我們將持續監測並致力於減小安裝體積。
遷移至 Vite 8
對於大多數專案,升級至 Vite 8 是平滑的。我們構建了一個相容層,可以自動將現有的 esbuild 和 rollupOptions 配置轉換為對應的 Rolldown 和 Oxc 配置,因此許多專案無需更改任何配置即可執行。
對於大型或複雜的專案,我們建議採取逐步遷移路徑:首先在 Vite 7 中從 vite 切換到 rolldown-vite 包,以隔離任何 Rolldown 特有的問題,然後再升級到 Vite 8。這種分步方法可以輕鬆定位問題是由打包器變更引起的,還是由其他 Vite 8 的改動引起的。
升級前請查閱詳細的 遷移指南。完整的變更列表位於 Vite 8 更新日誌。
感謝 Rollup 和 esbuild
隨著 Vite 轉向 Rolldown,我們想借此機會向成就了 Vite 的這兩個專案表達深切的感謝。
Rollup 自誕生起就是 Vite 的生產打包器。其優雅的外掛 API 設計被證明是非常出色的,Rolldown 也採納了它,Vite 的整個外掛生態系統都建立在 Rollup 奠定的基礎之上。Rollup 架構的質量和深度影響了 Vite 對於可擴充套件性的構思。感謝 Rich Harris 建立了 Rollup,感謝 Lukas Taegert-Atkinson 和 Rollup 團隊對其的維護和演進,使其對 Web 工具生態產生了深遠的影響。
esbuild 在早期為 Vite 提供了極其快速的開發體驗:依賴預打包、TypeScript 和 JSX 轉換能在毫秒而非數秒內完成。esbuild 證明了構建工具可以快幾個數量級,其速度設定了基準,啟發了整整一代基於 Rust 和 Go 的工具。感謝 Evan Wallace,向我們展示了什麼是可能的。
沒有這兩個專案,就不會有今天的 Vite。即使我們現在轉向 Rolldown,Rollup 和 esbuild 的影響力已深入 Vite 的 DNA,我們對它們為生態系統所做的一切充滿感激。你可以在 鳴謝 頁面瞭解更多 Vite 所依賴的專案和人員。
鳴謝
Vite 8 由 sapphi-red 和 Vite 團隊領導,並得到了廣大貢獻者、下游維護者和外掛作者的支援。我們要感謝 Rolldown 團隊,他們緊密的協作使得由 Rolldown 驅動的 Vite 8 成為可能。我們還要特別感謝每一位參與 rolldown-vite 預覽和 Vite 8 beta 期間測試的開發者。你們的測試、Bug 報告和反饋使得 Rolldown 的遷移成為可能,並將本次釋出塑造為我們引以為豪的版本。
Vite 由 VoidZero 呈現,與 Bolt 和 NuxtLabs 合作。我們也感謝 Vite GitHub 贊助者 和 Vite Open Collective 的所有贊助商。
