Vite 8.0 发布:Rolldown 成为唯一打包器,Linear 生产构建 46s 降到 6s
Vite 8.0 于 2026-03-12 发布。这一版把 Rolldown 作为唯一的、基于 Rust 的打包器,构建速度提升 10-30 倍,同时保持插件兼容。这是 Vite 2 以来最大的一次架构调整。
- 官网与文档:
- 迁移指南:
- 插件 registry:
- 在线试用:
问题:两套打包器
从最早的版本起,Vite 一直依赖两个打包器。esbuild 负责开发期的快速编译(依赖预打包、TypeScript/JSX 转换);Rollup 负责生产打包、chunk 拆分与优化,其插件 API 支撑起了整个 Vite 插件生态。
代价是两条独立的转换管线:两套插件系统、中间的胶水代码,以及模块处理行为不一致。
Rolldown 的三个目标
Rolldown 由 VoidZero 团队用 Rust 实现,目标有三个:
- 性能:比 Rollup 快 10-30 倍,与 esbuild 相当。
- 兼容:支持与 Rollup、Vite 相同的插件 API,多数现有 Vite 插件可直接使用。
- 高级特性:full bundle mode、更灵活的 chunk 拆分、模块级持久缓存、Module Federation 支持。
上线路径
Rolldown 先以独立的 rolldown-vite 包作为技术预览发布;2025 年 12 月的 Vite 8 beta 将其完整集成进来。
真实项目构建耗时
- Linear:生产构建 46s → 6s
- Ramp:减少 57%
- Mercedes-Benz.io:最多减少 38%
- Beehiiv:减少 64%
统一的工具链
Vite(构建工具)+ Rolldown(打包器)+ Oxc(编译器)。
Node.js 版本要求
Vite 8 要求 Node.js 20.19+ 和 22.12+,与 Vite 7 一致。这些版本范围保证 Node 无需 flag 即可支持 require(esm),因此 Vite 可以只以 ESM 形式分发。
其他特性
- 集成 Devtools:
devtools选项启用 Vite Devtools。 - 内置 tsconfig paths 支持:
resolve.tsconfigPaths = true,有少量性能开销,默认关闭。 - emitDecoratorMetadata:内置支持。
- Wasm SSR 支持:
.wasm?init导入现在可以在 SSR 中使用。 - 浏览器 console 转发:
server.forwardConsole,检测到 coding agent 时自动激活。
@vitejs/plugin-react v6
v6 使用 Oxc 做 React Refresh 转换,不再依赖 Babel。reactCompilerPreset helper 与 @rolldown/plugin-babel 配合使用。v5 仍然可以在 Vite 8 上工作。
后续计划
- Full Bundle Mode(实验性):在开发期把模块打包。初步结果:dev server 启动快 3 倍,full reload 快 40%,网络请求少 10 倍。
- Raw AST 传输。
- 原生 MagicString 转换。
- 稳定 Environment API。
安装体积
Vite 8 比 Vite 7 大约多 15MB。其中约 10MB 来自 lightningcss(现在是普通依赖),约 5MB 来自 Rolldown 二进制。
迁移到 Vite 8
兼容层会把 esbuild 和 rollupOptions 配置自动转换为等价的 Rolldown/Oxc 配置,不少项目无需改动配置即可运行。
对较大的项目,可以走渐进路径:先在 Vite 7 上把 vite 换成 rolldown-vite,把 Rolldown 相关问题隔离出来,再升级到 Vite 8。
迁移细节见 ,Changelog 在 GitHub。新建项目:
pnpm create vite