简聊一下 Vite 8
用 Rolldown 把开发和生产并成一条链路:同一套工具、同一套行为。
一、你一直在走的是「双轨」
Vite 是什么? 很多人会脱口而出:前端开发的「助推器」——改完代码秒级热更,体验丝滑。这话没错,但只说了故事的一半。
真相是:在 Vite 7 及之前,开发时用的是 esbuild(Go),上线构建时用的是 Rollup(JavaScript)。两套工具、两套行为,就像两条并行的轨道:一条负责开发、一条负责打包,各司其职,但两套系统带来的不一致和心智负担,只有踩过坑的人懂。
- 开发时:esbuild 秒开、秒 HMR,爽。
- 生产构建:Rollup 稳、生态强,但大项目动辄几十秒,慢。
- 结果:dev 和 build 走的不是同一条管道。行为差异、插件表现差异,偶尔会让你在「我本地没问题」和「线上怎么挂了」之间反复横跳。
双轨带来的典型痛点:同一份代码在 dev 下 tree-shaking 结果和 build 不一致;某个 Rollup 插件只在生产构建时才触发,本地复现困难;CI 里 build 一跑就是几分钟,拉高反馈周期。所以更准确的形容是:你一直在走「双轨并行」——两套工具各干一摊,从未真正收束到同一条链路上。
二、Vite 8:收束为「单轨」
Vite 8 做了一件事:用 Rolldown 统一开发与生产。
Rolldown 是用 Rust 编写的 JavaScript 打包器,由 Vite 核心团队主导开发,在设计上对齐 Rollup 的模型(bundle、chunk、tree-shaking),但实现从零用 Rust 重写,因此既能复用 Rollup 生态的插件约定,又能在性能和内存上跨一个数量级。目标很明确:
- 开发:不再单独依赖 esbuild,Rolldown 接管 dev 与 HMR。
- 生产:不再交给 Rollup,同样交给 Rolldown。
- 结果:从「双轨」变成「单轨贯通」——同一套工具、同一种行为,从 dev 到 build 一致可预期;排查问题时「本地复现」和「生产构建」走的是同一条逻辑,心智负担更小。
这不是「给老管线换个更快的泵」,而是构建链路的架构跃迁:从「两套系统拼一起」进化到「一条管线打通全流程」。
三、性能:数字会说话
官方与社区的真实数据(截至 Vite 8 Beta 阶段):
| 维度 | 变化 |
|---|---|
| 构建速度 | 相较 Rollup 方案 约 10–30 倍 量级提升 |
| 实际案例 | 某 SPA:3.8s → 0.8s(约 5 倍);Linear:46s → 6s;Beehiiv 构建时间 减少 64% |
| 内存占用 | 构建阶段内存 降低约 65–74% |
| 小型 / 中型 / 大型应用 | 普遍 约 6–8 倍 构建加速 |
也就是说:「数量级提速」有实测和案例支撑——具体倍数取决于项目规模与依赖,但方向一致:明显更快、更省内存。
谁最受益? 依赖多、chunk 多的大项目,以及 CI 里频繁跑 build 的团队(每次少几十秒,一天下来很可观);monorepo 里多个应用一起构建时,内存占用下降也能减轻机器压力。冷启动和增量构建的体感都会更轻——同样是「改一行再 build」,等待时间明显缩短。
四、不只是「快」:新能力从哪来?
统一到 Rolldown 之后,带来的不仅是速度,还有以前在「双轨分治」下很难做或做不好的事:
- 完整打包模式:生产构建的模型更清晰、可控,输出产物和 chunk 划分更容易推理,方便做资源优化和监控。
- 更细的代码分割:按模块、按路由、按 chunk 的策略更灵活,适合大型 SPA 或需要精细控制首屏体积的场景。
- 模块级持久化缓存:重复构建时复用成本更低,二次、三次 build 的增量成本明显下降,对 CI 和本地迭代都友好。
- Module Federation 等高级特性:为微前端、多应用协作铺路,后续在 Vite 生态里做运行时拆包、远程模块会更有基础。
- 与 Oxc 协同:Oxc 是同样用 Rust 写的高性能 JS/TS 解析与转换工具,Rolldown 可以利用其语义分析做更激进的树摇与优化;Vite + Rolldown + Oxc 正在形成「同一套 Rust 工具链」,从解析到打包一条龙,后续优化空间更大。
所以:Vite 8 的叙事不只是「构建快了」,而是「在一条统一的、可扩展的单轨管线上,既更快,又能做更多」。
五、生态:你现有的投入不会白费
「换掉整条管线」最怕的是:插件、配置全部推倒重来。
Rolldown 的选择是:兼容 Rollup 的插件 API。也就是说:
- 大多数现有 Vite / Rollup 插件 可以在不做大改的前提下继续用,迁移成本可控。
- 已对 SvelteKit、react-router、Storybook 等做兼容性验证,主流技术栈可以较平滑地尝鲜。
需要注意的边界:少数依赖 Rollup 内部实现或私有 API 的插件,可能在 Rolldown 下需要适配或暂时回退到兼容方案;若项目里用了非常冷门的 Rollup 插件,建议在分支上先跑一遍 build 和测试,看控制台是否有 deprecation 或兼容性提示。迁移路径整体简单:升级到 Vite 8.0.0-beta.x,很多项目零配置或极小改动即可体验;Beta 阶段建议先在非核心项目或分支上试跑,再考虑逐步推广到主链路。
六、怎么理解「从双轨到单轨」?
可以这样概括:
- 双轨(Vite 7 及以前):dev 用 esbuild,build 用 Rollup,快与稳分开两套,行为不完全一致。
- 单轨(Vite 8):dev 与 build 都走 Rolldown,单一工具链、同一套语义,快与稳在一套系统里统一。
「数量级提速」 更像是一个方向性的承诺:同一项目、同一机器上,构建时间明显下降是可期的;具体是 5 倍还是 10 倍,取决于项目。关键变化在于:这不是一次小优化,而是架构从「双轨并存」到「单轨贯通」的跃迁,顺带解锁了更细的代码分割、持久缓存、Module Federation 等新可能。
七、Rust 工具链一瞥:Vite 8 站在哪条线上
前端工具链正在经历一波「Rust 化」:用 Rust 重写解析、转换、打包,在性能和内存上整体上台阶。Vite 8 + Rolldown + Oxc 是这条线上的重要组合——解析与转换可以交给 Oxc,打包交给 Rolldown,Vite 负责编排与 DX;和「esbuild(Go)+ Rollup(JS)」的旧组合相比,同一生态、同一语言、同一套设计目标,后续在缓存、增量构建、跨插件优化上都有更多想象空间。了解这一点,有助于理解为什么 Vite 8 敢做「单轨」:不是简单换一个更快的引擎,而是整条链路的代际升级。
八、你可以马上做的事
- 读官方博客:Announcing Vite 8 Beta(英文),Rolldown 集成说明(Vite 文档)。
- 在副项目或分支上升级:
npm i vite@8.0.0-beta.0(或当前最新 beta),用现有配置先跑一遍 dev 和 build。 - 观察构建时间与内存:和当前 Vite 5/6/7 对比,看数量级提速在你项目上的体感;若在 CI 里跑 build,可以对比同一次 MR 的 build 时长。
- 需要时开启调试:遇到异常时可配合
vite build --debug或 Rolldown 相关日志,确认是否与插件或依赖有关。 - 关注 Rolldown 与 Oxc:它们会持续迭代,和 Vite 8 一起构成「Rust 前端工具链」的主线剧情;Rolldown 仓库与 Vite RFC 里常有关于兼容性与新特性的讨论,值得偶尔翻一翻。
迁移小清单(可勾选):在单独分支上升级 → 备份 lockfile / 提交前状态 → 跑一遍完整 test 与 build → 看 build 输出与控制台是否有 warning/error → 在 CI 上跑一轮同分支,对比构建时间与稳定性。全部通过后,再考虑合并到主分支或推广到更多项目。
九、何时升级、何时再等等
- 适合先尝鲜的:个人项目、侧线业务、对构建时间敏感且能接受 Beta 风险的项目;愿意跟进 issue 和 changelog 的团队。
- 建议再等等的:强依赖大量冷门 Rollup 插件的仓库、对线上稳定性零容错的核心主链路;可以等 Vite 8 正式版发布并经过一两轮 patch 后再全量上。
- 当前 Vite 8 仍标为 Beta,主旋律是「可用、可测、可反馈」,而不是「默认推荐所有生产环境立刻切换」。按自己的节奏评估即可。
总结
Vite 8 不是给老管线换个更快的泵,而是把 dev 和 build 收束到同一条「单轨」——同一套 Rolldown、更短的构建时间、更少的内存占用,以及更清晰的进阶能力。如果你已经在用 Vite,这次升级值得留出一个下午,在侧线项目里亲自跑一轮。
相关文档
Rolldown 官方指南:rolldown.rs