配了三年构建工具,今天才发现整个 npm 生态的「心脏」都被 Rust 换了
以前前端项目的构建是这样的:Webpack 打包、Babel 转译、ESLint 检查、Prettier 格式化、Terser 压缩——全是 JavaScript 写的。你可能没意识到,这套工具链的「心脏」,在 2026 年悄悄被 Rust 换了。
这件事从什么时候开始的
2020 年前后,社区开始发现 JS 工具链遇到了天花板。一个 10 万行代码的 monorepo,Webpack 热更新要等 8 秒,ESLint 全量检查 12 秒,代码压缩 8 秒。每次改一行代码,等它「想清楚」的时间比写代码的时间还长。
第一个破局者是 SWC。它用 Rust 重写了 Babel 的核心逻辑,编译速度提升 10-100 倍。Next.js 第一个跟进,把 SWC 集成进框架。后来这套思路扩散开来:Rspack 替代 Webpack、Rolldown 替代 Rollup、Oxc 替代 ESLint + Prettier + 打包工具里的各类 lint 逻辑。
到 2026 年 9 月,这个进程基本完成了。
现在 Rust 在前端工具链里干了什么
如果用一个列表来描述 2026 年前端工具链的 Rust 覆盖情况,大概是这样的:
已完成 Rust 化的环节:
- 代码解析:SWC / Oxc parser
- 代码转译:SWC / Rolldown
- 代码检查:Oxlint(比 ESLint 快 40 倍)
- 代码压缩:SWC Minifier(比 Terser 快 20 倍)
- 代码打包:Rspack / Rolldown(Vite 8 默认引擎)
- 代码格式化:Oxfmt(比 Prettier 快 30 倍)
也就是说,你跑 npm run build 到 npm run lint 到 npm run format,每一步的核心逻辑现在大概率都是 Rust 在跑。
数字能说明一切
拿一个真实的中型 React 项目(约 5 万行代码、300+ 组件)来对比:
| 操作 | JS 方案 | Rust 方案 | 提速 |
|---|---|---|---|
| 全量构建 | Webpack 5: 45s | Rspack: 3.2s | 14x |
| 热更新 | Webpack: 2.8s | Rolldown: 50ms | 56x |
| 全量检查 | ESLint: 12s | Oxlint: 0.3s | 40x |
| 代码压缩 | Terser: 8s | SWC: 0.4s | 20x |
| TS 解析 | tsc: 15s | oxc-parser: 0.15s | 100x |
这些不是实验室数据,是开发者在 GitHub Issues 和技术博客里反复验证的实测结果。
但光快不够,还要看实际落地情况
光有 benchmark 数据没意义,社区真正关心的是:我的项目能不能直接换,用了会不会踩坑。
几个已经大规模落地的案例:
Vite 8 默认引擎切换到 Rolldown(2026 年 3 月发布)。Linear 迁移后生产构建从 46 秒降到 6 秒;Ramp 报告 57% 构建时间下降;Beehiiv 优化幅度 64%。对现有项目来说,Vite 8 的配置基本兼容,升级后改动极小。
Next.js 16 将 Turbopack(Rust)设为默认 bundler。路由编译速度提升 20%-50%,Fast Refresh 快 10 倍。
Tailwind CSS v4 引入 Oxide 引擎(Rust 实现),构建时间下降 5-8 倍。
Oxc 工具链(VoidZero 出品)把 Parser/Linter/Formatter/Resolver/Minifier 六件套统一到同一个 AST 上。Shopify、Airbnb、Mercedes-Benz 都在 CI 里跑了 Oxlint 作为第一道门禁,替代了原来的 ESLint。
有人踩过的坑
Rust 工具链也不是完美的。几个需要知道的现实问题:
插件生态还在过渡期。Rolldown 和 Oxlint 都面临同一个选择:保持纯 Rust(速度快但插件生态小)还是暴露 JS 插件 API(损失部分性能但吸引更多贡献者)。目前两者都选了混合路线。如果你项目重度依赖自定义 webpack loader 或 ESLint 插件,迁移前需要审计一下兼容性。
内存占用初期可能更高。Rolldown 1.0 RC.18 曾出现 RSS 内存占用是 Rollup 7 倍的情况,后续版本已修复,但大项目监控一下内存曲线总没坏处。
贡献者门槛变了。传统 JS 工具,团队里随便谁都能看源码 debug。Rust 工具链需要有人懂 Rust,这在小型团队里是真实成本。
现在处于什么阶段
如果把 Rust 在前端工具链的渗透分成三个阶段:
- 第一阶段(已完成):工具链核心环节 Rust 化
- 第二阶段(进行中):框架层开始引入 Rust——React Compiler 正在用 Rust 重写(Meta 官方,Next.js 16.3 实验性支持),Leptos/Dioxus 作为 React 替代已成熟
- 第三阶段(探索中):类型检查器、运行时、IDE 插件——TypeScript 编译器也在探索 Rust 移植,Rust 实现的 DOM 操作层有人在做,Rust 包管理器概念阶段
2026 年 9 月的我们,刚好处于第一阶段完成、第二阶段过半的位置。
接下来会发生什么
接下来的变化会更触及前端开发的日常,而不只是工具链的「底层」。当框架底层也开始 Rust 化,前端开发者和 Rust 的距离会被进一步压缩。
对于已经在用 Vite 8 或 Next.js 16 的团队,这个切换是透明的,收益是真实的。对于还在用 Webpack 或更早版本 ESLint 的团队,现在迁移有明确路径,但不需要一口气全换——Rolldown 可以通过 Vite 8 渐进接入,Oxlint 可以先在 CI 里单独跑一个 job 试水。
下一步
- 查一下你项目现在的构建时间:跑一次
time npm run build,记住数字 - 把 Vite 升级到 8.x:Rolldown 会自动接手,不需要改配置,只改一行版本号
- 找一个不关键的仓库跑一下 Oxlint:看看 CI 速度提升了多少
当你下次改一行代码、热更新在 100 毫秒内跑完的时候,你会意识到这件事已经发生了——只是你之前没注意过那个「心脏」是谁在跳。
评论区
登录后可评论。