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 |
| Turbopack | 3.8s |
| Rspack 1.2 | 3.2s |
| Webpack 5 | 18.4s |
Vite 6的Rolldown模式(Rust实现的Rollup替代品)让冷启动进一步提速,3000个组件只需要2.1秒。这得益于Vite"按需编译"的架构 —— 它只在浏览器请求时编译对应模块,而不是预编译整个项目。
Rspack和Turbopack都走的是"预编译"路线,冷启动时需要解析所有模块的依赖关系,所以比Vite慢。但3-4秒的启动时间在实际开发中基本无感知。Webpack 5的18秒才是真正的痛点。
热更新:Turbopack的"增量编译"开始发力
| 工具 | HMR耗时(中位数) | HMR耗时(P99) |
|---|---|---|
| Vite 6 | 45ms | 120ms |
| Turbopack | 35ms | 85ms |
| Rspack 1.2 | 52ms | 150ms |
| Webpack 5 | 380ms | 2100ms |
这里有一个反直觉的发现:Turbopack的热更新比Vite更快。 原因是Turbopack在启动时已经建立了完整的依赖图,热更新时只需要重新编译变更文件和它的直接依赖。而Vite虽然按需编译,但每次热更新时ESM模块的依赖链可能导致"级联失效”,偶尔需要重新编译一系列文件。
Rspack的热更新P99偏高,反映了它在大型项目中的稳定性还有提升空间。
生产构建:Rspack异军突起
| 工具 | 生产构建时间 | Gzip产物大小 |
|---|---|---|
| Vite 6 (Rolldown) | 8.2s | 1.8MB |
| Turbopack | 12.1s | 2.1MB |
| Rspack 1.2 | 5.4s | 1.7MB |
| Webpack 5 | 47.3s | 2.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秒以上,选一个迁移成本最低的工具,先动起来。
构建工具是为了让你更快地交付产品,不是为了让你成为构建工具专家。