由 Evan You 创建的热门前端构建工具 Vite 发布 8.0 版本,此次更新带来了自 Vite 2 以来最重大的架构变革:从双打包器架构全面迁移至一个基于 Rust 的统一打包器 Rolldown 。
从最早的版本开始,Vite 就依赖于两个独立的打包工具:esbuild 用于快速开发编译,Rollup 用于优化生产环境构建。维护两条独立的转换管道意味着需要两个插件系统,这使得粘合代码不断增加,并且因模块处理不一致而积累了大量的边界情况。为了解决这一问题,Vite 8 用 Rolldown 取代了它们,这不仅能将构建速度提升 10 到 30 倍,还能完全兼容现有的 Vite 插件生态系统的插件 API 。
在 Beta 测试期间,相关报告指出,实际的性能提升非常显著。Linear 的生产环境构建时间从 46 秒缩短至 6 秒,Ramp 报告称缩短了 57%,而 Beehiiv 则实现了 64% 的提升。在 Hacker News 上,一位开发者分享了类似的体验:
Vite 8 确实非常出色。我们在生产环境构建中看到了约 8 倍的性能提升(从 4 分钟缩短至 30 秒),而且几乎可以直接替换原有方案。祝贺(并感谢!)Vite 团队!
还有人报告称,在一个有约一百万行代码的项目中,构建时间从 12 分钟缩短到了仅 2 分钟。
在 Reddit 的 r/rust 版块,相关讨论突显了 Rust 在 JavaScript 工具链中日益重要的作用,Rolldown、Oxc 和 Lightning CSS 都是用 Rust 编写的。
Vite 8 与 Yarn Plug'n'Play (PnP) 模块解析策略之间出现了一个值得注意的兼容性问题,特别是在 Windows 系统上。Vite 团队表示,未来可能不再积极支持 Yarn PnP。对于受影响的项目,当前的解决方法是将 Yarn 的 nodeLinker 切换为 node-modules,不过这会抵消 PnP 在磁盘空间和安装速度方面的优势。
除了 Rolldown 集成外,Vite 8 还从多个方面改进了开发体验。通过将 resolve.tsconfigPaths 设置为 true,内置的 tsconfig 路径支持将不再需要别名插件。原生支持 emitDecoratorMetadata,简化了 NestJS 和 Inversify 等框架的配置。新增的浏览器控制台转发功能(通过 server.forwardConsole 启用)可以将客户端日志直接传输至终端,这在使用 AI 编码代理时尤为实用。本次发布还包含 @vitejs/plugin-react v6,它将 React Refresh 转换中的 Babel 替换为 Oxc,缩小了安装包体积。
与竞争对手相比,Vite 8 将自己定位为 Turbopack 的一个框架无关的替代方案,而 Turbopack 仍然与 Next.js 生态系统紧密相连。最近有人做了项基准测试,他将 Vite 8 描述为在冷启动、HMR 和生产构建方面“最均衡的选择”。作为另一款基于 Rust 的打包工具,虽然Rspack 与 Webpack 的兼容性极佳,但其插件生态系统的广度不及 Vite。
对于迁移,团队建议大型项目采取渐进式方法:首先切换到 Vite 7 的 rolldown-vite 包以隔离 Rolldown 特有的问题,然后再升级到 Vite 8。该版本有一个内置的兼容层,会自动转换现有的 esbuild 和 Rollup 选项,因此,大多数项目不需更改配置即可直接升级。完整的迁移指南详细介绍了这个过程及该版本的破坏性变更。
Vite 是一款开源构建工具,目前每周下载量已经超过 6500 万次。它由 VoidZero 团队维护,是 SvelteKit、Nuxt、Astro、React Router 和 Storybook 等框架的基础。





