3000个组件,一次构建等了47秒

2025年底,我们团队的CI/CD流水线被前端构建拖垮了。每次PR的构建检查需要47秒,加上lint和测试,整个流程超过3分钟。开发体验更惨:在M1 Pro上冷启动dev server要18秒,热更新偶尔要2秒以上。

“Webpack不行了,换Vite吧。“这是最自然的选择。但2026年的构建工具生态已经和两年前完全不同了。Turbopack(Next.js的默认打包器)已经标注stable,字节跳动的Rspack 1.2版本也宣称兼容Webpack生态且快10倍。

我决定做一个公平的对比。

测试环境和方法

测试项目: 一个真实的企业级SaaS后台,3000+组件,500+页面,使用了React 19、TypeScript、CSS Modules、Less。这个项目能代表大多数中大型前端应用的复杂度。

测试环境: MacBook Pro M3 Max,32GB RAM,Node.js 22。

测试的四个工具:

  • Vite 6.1(Rolldown模式)
  • Turbopack(Next.js 16内置)
  • Rspack 1.2
  • Webpack 5(作为基准对照)

测试指标: 冷启动时间、热更新时间(HMR)、生产构建时间、产物体积。

冷启动:Vite依然最快,但领先优势在缩小

工具冷启动时间
Vite 6 (Rolldown)2.1s
Turbopack3.8s
Rspack 1.23.2s
Webpack 518.4s

Vite 6的Rolldown模式(Rust实现的Rollup替代品)让冷启动进一步提速,3000个组件只需要2.1秒。这得益于Vite"按需编译"的架构 —— 它只在浏览器请求时编译对应模块,而不是预编译整个项目。

Rspack和Turbopack都走的是"预编译"路线,冷启动时需要解析所有模块的依赖关系,所以比Vite慢。但3-4秒的启动时间在实际开发中基本无感知。Webpack 5的18秒才是真正的痛点。

热更新:Turbopack的"增量编译"开始发力

工具HMR耗时(中位数)HMR耗时(P99)
Vite 645ms120ms
Turbopack35ms85ms
Rspack 1.252ms150ms
Webpack 5380ms2100ms

这里有一个反直觉的发现:Turbopack的热更新比Vite更快。 原因是Turbopack在启动时已经建立了完整的依赖图,热更新时只需要重新编译变更文件和它的直接依赖。而Vite虽然按需编译,但每次热更新时ESM模块的依赖链可能导致"级联失效”,偶尔需要重新编译一系列文件。

Rspack的热更新P99偏高,反映了它在大型项目中的稳定性还有提升空间。

生产构建:Rspack异军突起

工具生产构建时间Gzip产物大小
Vite 6 (Rolldown)8.2s1.8MB
Turbopack12.1s2.1MB
Rspack 1.25.4s1.7MB
Webpack 547.3s2.0MB

Rspack在生产构建环节赢得了第一。比Vite快34%,比Turbopack快55%。而且产物体积最优秀。字节跳动在Rspack的Tree Shaking和代码分割上的优化显然下了大功夫。

Turbopack的产物体积偏大(2.1MB),我深入分析后发现它的代码分割策略比较保守,倾向于保持较大的chunk来减少HTTP请求数,这在HTTP/2时代反而有助于加载性能。不全是坏事,但如果你对包体积有硬指标,需要注意。

Vite 6的Rolldown模式在生产构建上比之前的Rollup快了三倍,但和Rspack相比还是逊色。Rolldown目前还处于追赶阶段,Rust重写的收益在生产构建场景下被Rspack的多年优化抵消了。

选型建议:别只看性能数据

选Vite 6,如果你:

  • 项目已经基于Vite,不需要迁移
  • 在开发体验上追求极致,冷启动速度的第一名
  • 不需要Webpack插件兼容性

选Turbopack,如果你:

  • 已经在用Next.js,它是默认选项
  • 需要和Next.js生态深度集成(ISR、Middleware等)
  • 看重热更新稳定性

选Rspack,如果你:

  • 正在从Webpack迁移,Rspack的兼容性最好
  • 项目规模大,生产构建速度是瓶颈
  • 需要Webpack Loader/Plugin生态的兼容

选Webpack,如果你:

  • 项目已经稳定运行,构建时间可以接受
  • 团队对Webpack非常熟悉
  • 改动构建工具的风险大于收益

一个关键提醒

2026年,构建工具的选择已经不是纯技术问题了。Vite的生态、Turbopack和Next.js的绑定、Rspack和Webpack的兼容 —— 每个选择背后都绑定了一个生态和一套开发范式。

我的建议是:如果你的构建时间在10秒以内,不要折腾。 省下来的时间用来写代码比什么都强。如果你的构建时间在30秒以上,选一个迁移成本最低的工具,先动起来。

构建工具是为了让你更快地交付产品,不是为了让你成为构建工具专家。