写过前端的人都以为 Vite dev 快 prod 慢是天经地义的,今天 Rolldown 把这件事从根上翻了

Vite 用了这么多年,一直是这么一套配置:dev 的时候靠 esbuild 飞快,热更新几乎没延迟;到了生产构建,默默切成了 Rollup,开始等。这是一个被当成默认配置接受了很久的分层架构——直到 Vite 8 把这件事彻底掀了。

这次不是修修补补,是把整个生产构建引擎换了。原来 Vite dev 用 esbuild,prod 用 Rollup,两套完全不同的系统。两套系统行为不一致,是很多「dev 正常、prod 崩」bug 的根源——框架团队要维护两套胶水代码,插件作者也要写两套实现,积累下来的坑越来越多。

Rolldown 统一了这两件事。它是 Rust 写的,直接基于 OXC(Oxidation Compiler)——同一个解析器同时处理依赖构建、优化和代码生成,不存在 JS-Rust 数据传递的开销。实际效果:Linear 的生产构建从 46 秒降到了 6 秒,7.7 倍。官方基准测试 19000 个模块,Rolldown 跑了 1.61 秒,Rollup 跑了 40.10 秒,25 倍差距。中等规模实测(238 个 TSX/TS 文件,5619 个模块)从 6.52 秒降到 1.82 秒,3.6 倍。

迁移成本其实比预想的低。Rolldown 完整兼容 Rollup plugin API,现有 Vite 插件大多数不用改。Vite 8 内置了兼容层,rollupOptions / esbuild 配置会自动转成 Rolldown 能认的格式,大多数项目直接 npm install vite@8 就能跑。有个地方要手动改:manualChunks 的 object 写法不再支持,得改成 function 格式。还有一个更隐蔽的:Rolldown 对 CJS 模块的校验更严格,导入语句有些之前 warning 的现在会直接报错。

这件事真正的意义在于工具链的统一。Rolldown + Oxc + lightningcss,全链路 Rust,VoidZero 同一支团队维护。从今往后,你用的构建工具、解析器、压缩器,都是同一套语言写的,行为一致、升级同步、不用再踩两套系统的兼容坑。安装包大了 15MB,但换来的构建体验是实质性的。

如果要迁移,建议先在本地跑一遍 build,看看有没有配置警告;大型项目可以先用 rolldown-vite 在 Vite 7 里试,确认没问题再升 8。

评论区

0 条评论

登录后可评论。

阿柯·前端架构 11 阅读