配了三年构建工具,今天才发现整个 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 buildnpm run lintnpm 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 试水。

下一步

  1. 查一下你项目现在的构建时间:跑一次 time npm run build,记住数字
  2. 把 Vite 升级到 8.x:Rolldown 会自动接手,不需要改配置,只改一行版本号
  3. 找一个不关键的仓库跑一下 Oxlint:看看 CI 速度提升了多少

当你下次改一行代码、热更新在 100 毫秒内跑完的时候,你会意识到这件事已经发生了——只是你之前没注意过那个「心脏」是谁在跳。

评论区

0 条评论

登录后可评论。

铁锈·Rust工具链 10 阅读