字节跳动开源前端模块打包工具 Rspack:基于 Rust、主打高性能


字节跳动开源了一款采用 Rust 开发的前端模块打包工具:Rspack(读音为/'ɑrspæk/)。

据介绍,Rspack 是一个基于 Rust 的高性能构建引擎,具备与 Webpack 生态系统的互操作性,可以被 Webpack 项目低成本集成,并提供更好的构建性能。

特性

  • 启动速度极快: 基于 Rust 实现,构建速度极快,带给你极致的开发体验。
  • 闪电般的 HMR: 内置增量编译机制,HMR 速度极快,完全胜任大型项目的开发。
  • 兼容 webpack 生态: 针对 webpack 的架构和生态进行兼容,无需从头搭建生态。
  • 内置常见构建能力: 对 TypeScript、JSX、CSS、CSS Modules、Sass 等提供开箱即用的支持。
  • 默认生产优化: 默认内置多种优化策略,如 Tree Shaking、代码压缩等等。
  • 框架无关: 不和任何前端框架绑定,保证足够的灵活性。

从官方的描述来看,他们创建此项目并非是强行造轮子。而是当前的技术方案无法满足他们的需求,所以才决定自研 Rspack。

开发团队表示,字节跳动内部存在非常多的大型前端应用,它们有着非常复杂的构建配置,生产环境构建需要耗费十几分钟,甚至超过半小时;开发环境的耗时也超过十几分钟。

他们在 Webpack 上尝试了多种方法去优化这些项目的编译速度,但是社区内存在的方案都或多或少存在一些问题,在对这些问题总结后,他们理解到工程师对构建工具的诉求是:

  • 良好的 Dev 启动性能
  • 良好的 Build 性能
  • 足够灵活的配置
  • 生产环境的产物优化能力

在确定了这四个需求后,团队调查了社区中的所有技术方案,它们通常都能很好地满足其中个别需求,但没有一个方案能同时满足所有条件。因此,他们决定自研 Rspack。

开发团队还说道,到今天(2023 年 3 月)为止,Rspack 已经开发了 11 个月,虽然仍处于比较早期的状态,且缺失了一些 Webpack 的功能,但根据二八原则,目前的功能已经能够满足大多数项目的需求。而且根据他们的验证,Rspack 可以给项目带来 5 ~ 10 倍的编译效率提升,并且随着内置越来越多的常见 features,性能也在逐步地提升。

构建速度对比(模块数量:50000)

查看 Benchmark 详情

目前 Rspack 已经完成了 Webpack Loader 架构的支持,开发者可以在 Rspack 中使用之前见到的 Loader,如 babel-loader、less-loader、svgr 等等。团队表示长期的目标是完整支持 Loader,未来可以直接在 Rspack 中使用社区内的 vue-loader。


去年 Vercel 公司也开源了一款基于 Rust 的打包工具:Turbopack。Turbopack 是面向 JavaScript 和 TypeScript 优化的增量打包工具和构建系统,采用 Rust 编写,声称是 Webpack 的继任者,也是以“高性能”作为卖点。

Rspack 开发团队也表示他们从 Turbopack 汲取了灵感,启发了 Rspack 里基于 AST 的路径重写逻辑

虽然 Rspack 和 Turbopack 都是基于 Rust 实现的 bundler,且都发挥了 Rust 语言的优势。但与 Turbopack 不同的是,Rspack 选择了对 Webpack 生态兼容的路线

开发团队认为,这些兼容可能会带来一定的性能开销,但在实际的业务落地中,对于大部分的应用来说,这些性能开销是可以接受的,另一方面,这些兼容也使得 Rspack 可以更好地与上层的框架和生态进行集成,能够实现业务的渐进式迁移。

团队还提到,他们已经和 Webpack 团队确立了合作关系,Rspack 作为 Webpack 通过 Rust 进行性能优化的一个尝试,未来会和 webpack 团队一起探索优化 webpack 的更多可能性。当 Rspack 达到一定的成熟度时,webpack 团队将尝试以实验特性方式将 Rspack 集成到 webpack 中。


相关文章

2023-03-25

微拓扑,基于更细粒度的微拓扑信息完成资源分配,满足高性能业务的 QoS 要求。 详细的功能规划请参考 roadmap。 虽然混部技术在字节内部已经经历了几次的技术迭代,但是一个通用、标准化的平台底座必然要经过各种场景

2023-02-08

源项目前 100。 国内 腾讯、华为、阿里巴巴、美团、字节跳动、百度、京东、网易、快手、圆通 等 和 国外 Google, Microsoft, Amazon, Paypal, IBM, Shopee 等数百名知名大厂员工点了 Star, 也有 腾讯、华为、字节跳动、Microsoft、Zoom、

2022-10-28

10月26日,字节跳动宣布开源BitSail数据集成引擎。BitSail意为“数据航行”,可支持二十余种异构数据源间的数据同步,提供离线、实时、全量、增量场景下的全域数据集成解决方案,从而打通困扰企业数字化转型的“数据孤岛”

2023-03-10

3月7日,由字节跳动主办,英特尔、OCP-OSF(Open System Firmware)、OSFF(Open System Firmware Foundation) 社区联合举办的“云固件交流沙龙”在北京召开。会上,字节跳动正式发布了新一代云固件 Cloud Firmware 2.0,这是首次在 X86 服务器中产品化

2022-10-20

近日,CNCF 发布了最新版本的云原生全景图。字节跳动多租户网关项目 KubeZoo 被收录,在 Provisioning-Automation & Configuration 领域占有一席之地。这意味着 KubeZoo 正式成为 CNCF 认可的构建云原生最佳实践中的一环。 Landscape

2023-04-27

为 Primus 解决的问题。   日均作业百万核的字节跳动实践 经过字节跳动在不断实践中调整打磨的 Primus,拥有以下能力支撑业务需求: 自研训练框架:目前除了业界开源的 Tensorflow、Pytorch,为了满足用户的

2021-11-16

,而这次的攻击目标涉及到国内的“ BAT 大厂”:阿里、字节和腾讯。 ATW 泄露资料时间线: 11 月 11 日 12:40:涉及 CN 科技部  Chinese Ministry Of Science And Technology | SRCs | 202111 月 12 日 14:21:涉及腾讯温江项目 Chinese Tencent |

2022-10-24

经出现,包括AssemblyScript、Grain、Motoko和凹语言等。 3.1.2 高性能的网络应用 已经有一些公司使用Wasm来显著提高他们的网络应用程序的性能。例如,Figma(刚刚被Adobe以200亿美元收购),一个基于浏览器的协作界面设计工具,使

2022-11-02

在 Next.js Conf 大会上发布了 Next.js 13,同时宣布了最新的开源项目:Turbopack。Turbopack 是面向 JavaScript 和 TypeScript 优化的增量打包工具和构建系统,采用 Rust 编写,声称是 Webpack 的继任者。 其实 Turbopack 正是出自 Webpack 作者 Tobias

2023-04-21

语意为 "快速的",发音 /vit/ 同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成: 一个开发服务器,它基于原生 ES 模块提供了丰富的内建功能,如速度快到惊人的模块热更新(HMR)

2023-02-09

速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市场,后台一键快速安装 会员模块通用且完整,支持完整的API调用 大文件分片上传

2022-08-24

程序的时候,意外发现该程序的多个依赖项都没有明确的开源许可。  举个例子,在使用 Golicense(一个扫描 Go 程序的依赖性及许可的工具)进行扫描后,扫描结果显示: 🚫 gitea.com/noerw/unidiff-comments <license not found or detec

2023-01-18

太长、读起来拗口、不容易记等问题。因此在加入 Dromara 开源社区之际,将名字进行了变更。 Dante,即但丁·阿利基耶里(公元1265年-公元1321年),13世纪末意大利诗人,现代意大利语的奠基者,欧洲文艺复兴时代的开拓人物之一

2022-07-15

功能,包括新的字符串前缀和后缀方法、字典联合操作、高性能解析器、多进程改进。 Node.js 16 包括将 V8 引擎升级到 9.2 版本,新的 Timer Promises API、新的 Web streams API,以及对 npm 软件包管理器 7.20.3 版本的支持。Node.js 现在与 O