2026 年 3 月 12 日,Vite 团队正式发布了 Vite 8.0。这是自 Vite 2 以来最大的一次架构变更——用 Rust 编写的 Rolldown 取代了 esbuild + Rollup 的双引擎设计,成为 Vite 唯一的底层打包器。
Vite 从诞生起就依赖两个打包器:
这套"双引擎"方案支撑 Vite 走了好几年,但代价也在持续累积:
团队的结论是:与其继续缝合两个引擎,不如用一个统一的、Rust 原生的打包器一步到位解决。
Rolldown 是 VoidZero 团队用 Rust 构建的打包器,设计目标有三个:
Rust 原生速度。在基准测试中,Rolldown 比 Rollup 快 10-30 倍,达到 esbuild 同级性能。
支持与 Rollup/Vite 相同的插件 API。绝大多数现有 Vite 插件在 Vite 8 下开箱即用,不需要改代码。
单一引擎解锁了双引擎时代难以实现的功能:
在预览和 Beta 阶段,多家公司报告了生产构建的实测提升:
| 公司 | 构建耗时变化 |
|---|---|
| Linear | 46s → 6s |
| Ramp | 减少 57% |
| Mercedes-Benz.io | 最高减少 38% |
| Beehiiv | 减少 64% |
对于大型项目,提升尤其明显。
通过 devtools: true 开启官方 Vite Devtools 面板,可以在开发服务器中直接调试和分析项目。
// vite.config.ts
export default defineConfig({
devtools: true,
})设置 resolve.tsconfigPaths: true 后,Vite 会自动读取 tsconfig.json 中的 paths 映射来解析模块路径,不再需要 vite-tsconfig-paths 等第三方插件。
export default defineConfig({
resolve: {
tsconfigPaths: true,
},
})注意:有轻微性能开销,默认关闭。
Vite 8 内置了 TypeScript emitDecoratorMetadata 的支持,不再需要额外插件。
.wasm?init 导入现在在 SSR 环境中也能正常工作。
新增 server.forwardConsole 选项,可以把浏览器端的 console.log / console.error 转发到开发服务器的终端输出。当检测到 AI 编码助手(coding agent)时会自动启用——这对使用 Claude Code、Cursor 等工具开发的场景非常实用。
React 插件的 v6 版本随 Vite 8 同步发布:
reactCompilerPreset 辅助函数官方上线了 registry.vite.dev,一个可搜索的插件目录,涵盖 Vite、Rolldown、Rollup 插件,数据每天从 npm 同步。
大多数项目可以平滑升级。 Vite 8 内置了兼容层,会自动把旧的 esbuild 和 rollupOptions 配置转换为 Rolldown/Oxc 等价配置。
对于大型或复杂项目,官方推荐两步走:
vite 替换为 rolldown-vite 包,隔离 Rolldown 相关问题需要 Node.js 20.19+ 或 22.12+(与 Vite 7 一致)。
build.target 的默认值对齐到 Baseline Widely Available(截至 2026-01-01):
| 浏览器 | Vite 7 | Vite 8 |
|---|---|---|
| Chrome | 107 | 111 |
| Edge | 107 | 111 |
| Firefox | 104 | 114 |
| Safari | 16.0 | 16.4 |
| 旧配置 | 新配置 |
|---|---|
build.rollupOptions | build.rolldownOptions |
worker.rollupOptions | worker.rolldownOptions |
optimizeDeps.esbuildOptions | optimizeDeps.rolldownOptions |
esbuild (transform 选项) | oxc |
生产构建的 JavaScript 压缩从 esbuild 切换到 Oxc Minifier。如需回退:
export default defineConfig({
build: {
minify: 'esbuild', // 废弃,需手动安装 esbuild
},
})CSS 压缩从 esbuild 切换到 Lightning CSS,支持更好的语法降级。CSS 产物体积可能略有增加。
default 导入 CJS 模块的行为在开发和生产之间做了统一。如果遇到问题,可以临时恢复旧行为:
export default defineConfig({
legacy: {
inconsistentCjsInterop: true, // 废弃,临时过渡
},
})增加约 15MB(Lightning CSS + Rolldown 二进制)。
Rolldown 的集成打开了很多新的可能性,官方正在推进的方向包括:
在迁移到 Rolldown 的同时,Vite 团队在公告中专门感谢了两个让 Vite 成为可能的项目:
即使底层引擎已经更换,Rollup 和 esbuild 的影响深深嵌入了 Vite 的 DNA 中。