📋 目錄
JavaScript 工具鏈正在經歷一場 Rust 化浪潮。Vite 在 2025-2026 年宣布全面採用 Rolldown——一個由 VoidZero 開發的 Rust-based bundler——取代原本的 Rollup + ESBuild 組合。Rolldown 保留了 Rollup 的 API 設計,效能卻快了 10-30x。這不只是 Vite 的選擇,也是整個前端生態系向 Rust 遷移的訊號。
前端工程師為什麼要關心 Bundler 的變化
Bundler(打包工具)是前端工具鏈中最被依賴、但也最容易被忽略的一層。多數時候,Bundler 運作正常,你不需要動它。但當它開始變慢——大型專案的 cold build 要等 30 秒、CI/CD 的建置時間長到讓人去看手機——這就是問題了。
過去幾年,Bundler 的效能已經有過一次大幅提升:esbuild(2019)和 swc(2020)用 Go/Rust 重新實現了關鍵路徑,讓本來需要幾十秒的建置,變成幾秒。但 esbuild 和 swc 的定位更接近「transformer」和「minifier」,不是完整的 bundler。
Rolldown 的出現,是要把 Rust 的效能帶入完整的 bundler 體驗。
Rolldown:Rust-based Bundler
什麼是 Rolldown
Rolldown 是由 VoidZero 開發的一個 Rust-based JavaScript bundler:
// Rolldown 的 API 設計與 Rollup 完全相容
// 這是 Rollup 的用法:
import { rollup } from 'rollup';
async function build() {
const bundle = await rollup({
input: './src/index.js',
});
await bundle.write({
format: 'es',
dir: 'dist',
});
}
// 如果用 Rolldown:
import { rolldown } from 'rolldown';
async function build() {
const bundle = await rolldown({
input: './src/index.js',
});
await bundle.write({
format: 'es',
dir: 'dist',
});
// 基本上就是換個 import 名稱
}
Rolldown 的目標:提供 Rollup 相同的 API、相容的 Plugin 生態,但效能提升 10-30x。
效能數據
| Bundler | 語言 | Cold Build | Hot Reload |
|---|---|---|---|
| Rollup | JavaScript | 慢 | 中等 |
| esbuild | Go | 快 | 很快 |
| Rolldown | Rust | 很快 | 極快 |
| Vite (old) | Rollup + esbuild | 中等 | 快 |
Rolldown 的效能提升主要來自:
- 從頭用 Rust 重寫:繞過 JavaScript runtime 的 overhead
- 平行處理:更好地利用多核 CPU
- 記憶體效率:Rust 的記憶體管理比 JavaScript 更高效
Vite 為什麼選擇 Rolldown
過去的 Vite 架構
Vite 過去的開發模式使用 esbuild 做依賴預切割(dependency pre-bundling),使用 Rollup 做生產建置:
Vite 開發模式:
esbuild(極速)→ 預切割 node_modules → 提供給瀏覽器
(所以 Vite 的 dev server 啟動很快)
Vite 生產模式:
Rollup → bundling → 輸出
(所以 Vite 的 production build 速度和 Rollup 一樣)
這個架構在 2021-2023 年是正確的選擇。但隨著專案規模變大,開發者開始感受到這個架構的瓶頸。
Rolldown 的出現改變了什麼
Vite 宣佈在 2025-2026 年將 Rolldown 納入核心,作為開發和生產模式的共同 bundler:
新的 Vite 架構:
Rolldown(Rust)→ 統一處理開發和生產建置
這個改變的影響:
- 開發啟動更快:Rolldown 預切割 node_modules 比 esbuild 更快
- 生產建置更快:Rolldown 比 Rollup 快 10-30x
- 一致性:開發和生產使用同一個 bundler,行為更一致
Rollup 5 的角色轉變
Rollup 作為「上游定義」
當 Rolldown 開始被採用後,Rollup 的角色發生了變化:
過去:Rollup = production bundler
現在:Rollup = API 和 Plugin API 的定義標準,Rolldown 負責實際執行
這意味著:
- Rollup 的 Plugin 生態不會消失——Rolldown 與 Rollup API 相容,Plugin 可以共用
- Rollup 核心團隊的開發重點,從「做 bundler」變成「定義bundler API 和 Plugin 介面」
Rollup 5 的變化
Rollup 5 是一個過渡版本,主要變化:
- 移除一些過時的選項:清理技術債,與 Rolldown 保持一致
- Plugin API 標準化:確保 Rollup Plugin 能在 Rolldown 上運作
- 維持 Node.js 支援:Rolldown 目前的最低 Node.js 版本要求較高,Rollup 繼續填補這個缺口
工具鏈 Rust 化的更大趨勢
Rolldown 不是孤立的案例。2025-2026 年,JavaScript 工具鏈的核心部分,正在經歷 Rust 重寫:
| 工具 | 原本語言 | Rust 版本 | 效能提升 |
|---|---|---|---|
| Babel | JavaScript | SWC | 20x |
| Terser | JavaScript | esbuild (Go) | 20x |
| Rollup | JavaScript | Rolldown (Rust) | 10-30x |
| ESLint | JavaScript | Biome (Rust) | 10-56x |
| TypeScript 編譯器 | TypeScript | TypeScript 7.0 (Go) | 預計 5-10x |
這個趨勢背後的原因很簡單:JavaScript 的效能已經不夠用了。當你的工具鏈需要處理數十萬行的程式碼,JavaScript 的單執行緒和 garbage collection overhead 成了瓶頸。Rust/Go 的系統級效能,開始在工具鏈層面碾壓 JavaScript。
實務影響
對 Vite 用户的影響
如果你是 Vite 使用者:
# 2026 年的 Vite 升級
# Vite 會自動使用 Rolldown 作為 bundler
# 不需要改任何程式碼
# 但如果要明確指定:
import { defineConfig } from 'vite';
import rolldown from 'vite-plugin-rolldown';
export default defineConfig({
plugins: [rolldown()],
});
對非 Vite 用户的影響
如果你用其他 bundler:
| Bundler | 現況 | 是否需要擔心 |
|---|---|---|
| Webpack | 仍是主流,龐大生態 | 暫時不需要擔心 |
| Rollup | 轉型為 API 定義者 | Rolldown 接管執行 |
| esbuild | 作為 Transformer 仍廣泛使用 | 繼續使用,不需要改 |
| Parcel | 獨立發展 | 暫時不需要擔心 |
結語:Rust 正在改變前端工具的底層
Rolldown 的出現,是前端工具鏈 Rust 化浪潮中的一個信號。
過去,前端工程師對工具鏈的期待是「能用就行」——速度慢一點、配置復雜一點,但至少可靠。esbuild 和 Rolldown 代表的趨勢是「不犧牲效能的前提下,工具也能很可靠」。
對於前端工程師來說,這個趨勢的實際意義:你的 CI/CD 會越來越快,你的 dev server 啟動時間會從幾十秒變成幾秒。這些改變不是來自更好的演算法,而是來自更底層的工具語言選擇。
延伸閱讀
- Vite 6.0 升級指南 — Vite 生態的最新發展
- Astro 5.0 全面解析 — 使用 Vite 的靜態網站框架
本文是「2026 前端工具演進」系列文章之一。