Vite 8.0 发布公告
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(加入超过 1200 名 Vite Core 贡献者的行列)、改进我们的依赖项以及生态系统中的插件和项目。请参阅我们的贡献指南了解更多信息。一个好的入门方式是对 issue 进行分类、审查 PR、根据未解决的 issue 提交测试 PR,并在 讨论区 或 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 中直接使用。
- 高级特性: 一个统一的打包器解锁了在双打包器架构下难以或不可能实现的功能,包括完整打包模式、更灵活的代码分割、模块级持久缓存以及模块联邦支持。
通往稳定版的历程
向 Rolldown 的迁移是深思熟虑且由社区驱动的。首先,一个独立的 rolldown-vite 包作为技术预览版发布,允许早期采用者测试 Rolldown 的集成,而不会影响 Vite 的稳定版本。这些早期采用者的反馈是无价的。他们通过各种规模和形态的真实代码库来推动集成,揭示了边界情况和兼容性问题,让我们能够在更广泛的发布之前解决这些问题。我们还建立了一个专门的 CI 套件,针对新打包器验证关键的 Vite 插件和框架,及早发现回归问题,并为迁移路径建立信心。
2025 年 12 月,我们发布了完全集成 Rolldown 的 Vite 8 测试版。在测试期间,Rolldown 本身从测试版推进到发布候选版,并在 Vite 社区的测试和反馈的推动下不断改进。
实际性能
在 rolldown-vite 的预览和测试阶段,几家公司报告了生产构建时间的大幅减少:
- Linear: 生产构建时间从 46 秒降至 6 秒
- Ramp: 构建时间减少了 57%
- Mercedes-Benz.io: 构建时间最高减少 38%
- Beehiiv: 构建时间减少了 64%
对于大型项目,这种影响尤其明显,我们预计随着 Rolldown 的不断发展,还会有进一步的改进。
统一工具链
通过 Vite 8,Vite 成为一个端到端工具链的入口,该工具链由紧密协作的团队组成:构建工具(Vite)、打包器(Rolldown)和编译器(Oxc)。这种一致性确保了整个技术栈(从解析、解析到转换和压缩)的行为一致。这也意味着随着 JavaScript 的发展,我们可以快速采用新的语言规范。而且,通过跨层深度集成,我们可以追求以前无法实现的优化,例如利用 Oxc 的语义分析来改进 Rolldown 中的 tree-shaking。
感谢社区
如果没有更广泛的社区,这一切都不可能实现。我们要向那些早期测试 rolldown-vite、提交详细错误报告并与我们一起解决兼容性问题的框架团队(SvelteKit、React Router、Storybook、Astro、Nuxt 等)表示深深的感谢。我们同样感谢每一位尝试测试版、分享他们构建时间改进并报告粗糙边缘的开发者,你们的反馈帮助我们打磨了这个版本。你们愿意在真实项目上测试迁移,这使向 Rolldown 的过渡更加顺利和可靠。
Node.js 支持
Vite 8 要求 Node.js 20.19+、22.12+,这与 Vite 7 的要求相同。这些版本范围确保了 Node.js 无需标志即可支持 require(esm),从而允许 Vite 仅作为 ESM 分发。
其他特性
除了 Rolldown 集成之外,Vite 8 还包含几个值得注意的特性:
-
集成开发工具: Vite 8 提供了
devtools选项来启用 Vite Devtools,这是一个用于调试和分析的开发者工具。Vite Devtools 直接在开发服务器中为您的 Vite 项目提供更深入的见解。 -
内置 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 的集成为改进和优化打开了大门。以下是我们接下来正在做的工作:
-
完整打包模式(实验性):此模式在开发期间打包模块,类似于生产构建。初步结果显示,开发服务器启动速度提高了 3 倍,完整重新加载速度提高了 40%,网络请求数量减少了 10 倍。这对于非打包开发方法达到扩展极限的大型项目尤其有影响力。
-
原始 AST 传输:允许 JavaScript 插件以最小的序列化开销访问 Rust 生成的 AST,弥合 Rust 内部和 JS 插件代码之间的性能差距。
-
原生 MagicString 转换:启用自定义转换,其中逻辑在 JavaScript 中,但字符串操作计算在 Rust 中运行。
-
稳定环境 API:我们正在努力使环境 API 稳定。生态系统已经开始定期举行会议以更好地协作。
安装体积
我们希望对 Vite 安装体积的变化保持透明。Vite 8 本身的体积比 Vite 7 大约大 15 MB。这主要来自两个方面:
- 约 10 MB 来自 lightningcss: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 将其采纳为自己的 API,而 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 测试阶段的人。你们的测试、错误报告和反馈使 Rolldown 迁移成为可能,并将这个版本塑造成我们引以为豪的作品。
Vite 由 VoidZero 与 Bolt 和 NuxtLabs 合作打造。我们还要感谢 Vite 的 GitHub Sponsors 和 Vite 的 Open Collective 上的赞助商。
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
