← 文章 / 开源项目
InfoQ 6小时前 · 2026-07-27 18:01:31 · 2 阅读

RSPack 2.0:性能提升、更精简的依赖项和 ESM 核心

Rspack(字节跳动基于 Rust 开发的 JavaScript 打包工具)发布 2.0 版本,在提升性能、精简依赖关系的同时,还转向了现代 ECMAScript 模块输出格式。

Rspack 2.0 引入了多项改进,包括:纯 ESM 核心、对 React 服务器组件的实验性支持、针对较小打包文件的静态分析改进,以及配置简化。这标志着该项目进入了一个快速增长阶段,其每周 npm 下载量已经从 1.0 版本发布时的约 10 万次攀升至超过 500 万次。

Rspack 2.0 的主要亮点之一是性能。根据开发团队的基准测试,整体构建性能比 Rspack 1.7 快约 10%,比 1.0 版本快达 100%。在一个包含 10000 个组件的 React 项目中,启用持久化缓存后的生产环境构建时间从 1.0 版本的 5.6 秒缩短至 2.0 版本的 1.4 秒,而热模块替换时间则降至 118 毫秒。在缓存命中时,SWC 压缩器的缓存复用功能可以将构建性能提升约 50%,而且启用缓存后,内存占用量减少了超过 20%。

同样值得注意的是依赖项的急剧减少。@rspack/dev-server 包的依赖项从 192 个减少到了 1 个,其安装大小也从 15 MB 缩减至 1.4 MB。这一细节在 Hacker News 上引起了关注,有评论者写道:“与性能数据相比,依赖项减少的数字更让我印象深刻”,并称其为“一种理念的转变,而不仅仅是基准测试”,以及“在现阶段采取了比大多数打包工具更强硬的供应链立场”。

在模块方面,@rspack/core 现在已经作为纯 ESM 包发布,其 CommonJS 构建版本已经被移除。开发团队表示,由于 Node.js v20.19 及更高版本可以通过 require() 加载 ESM,所以大多数使用 JavaScript API 的项目不需要修改代码。Rspack 2.0 还新增了对 import.meta 以及 stage-3 import defer 提案的支持,同时改进了 ESM 库的构建。树摇功能也得到了改进,并且在生产环境中默认启用了无副作用函数分析,可以通过注解进行检测。

从 1.x 版本升级的开发者需要注意:Rspack 2.0 要求 Node.js 20.19+ 或 22.12+ 版本,而不再支持 Node.js 18,并且已经移除了 module.unsafeCache 。开发团队建议将 @rspack/core、@rspack/cli、@rspack/dev-server 和 @rspack/plugin-react-refresh 统一升级至 ^2.0.0。要了解详细信息,请参阅迁移指南破坏性变更讨论。在一段时间内,1.x 分支将继续接收关键修复,但新的开发工作将主要集中在 2.x 分支上。

Reddit 上,r/rust 版块的一位用户指出,这些基准测试仅与较旧版本的 Rspack 进行了对比,并且补充说,作为一名“完全采用 Rolldown 栈”的用户,只有当 Rspack 能提供更强的性能和更完善的生态系统时,他才会考虑切换。另一位 r/javascript 版块的用户则认为,Rspack 是一个强有力的 Webpack 替代方案:

Rspack 正逐渐成为 Webpack 的一个非常可靠的替代方案。很高兴看到 2.0 版本带着这些改进问世。

目前,Rspack 仍在与 Webpack、Vite 的 Rolldown 以及 Turbopack 展开竞争,并且因为配置与 Webpack 约 95% 兼容而具备迁移优势,这是配置不兼容的竞争对手无法比拟的。

Rspack 是一款基于 Rust 语言的开源打包工具,由字节跳动维护并采用 MIT 许可证发布,其定位是 Webpack 的直接替代方案,支持 TypeScript、JSX、CSS 以及广泛的 Webpack 插件生态系统。

原文链接:https://www.infoq.com/news/2026/07/rspack-2-release/

原始来源: InfoQ

评论 (0)