字节跳动开源前端模块打包工具 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,为了满足用户的

2023-11-18

在近日举办的 Linux Plumbers Conference 上提出,字节跳动 Linux 内核工程师 Cong Wang 发表了一个“Linux Kernel Autotuning”的主题演讲,提议可以使用人工智能(AI)和机器学习(ML)来调整 Linux 内核,从而为特定工作负载带来

2022-10-24

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

2021-11-16

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

2023-12-21

React/Vue/Nerv 等框架来开发微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 等应用。 此版本具体更新内容如下: 修复 小程序 修复了小程序 Input 组件在使用 async onInput 回调时导致输入框闪烁的问题 修复了 Webpack5 Reac

2023-09-10

具、测试框架等功能融合在一个工具中,提供开箱即用的高性能体验。 Bun兼容现有的Node.js生态,几乎所有Node程序可以无缝迁移。更令人振奋的是,Bun的启动速度可达Node的4倍,运行TypeScript的速度比esbuild+Node快5倍!原因在于其

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)

2024-03-02

React/Vue/Nerv 等框架来开发微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 等应用。 此版本具体更新内容如下: 特性 H5 Swiper 组件新增 currentItemId 参数支持 Video 组件新增全屏事件抛出 Stencil 组件库支持 hydrate 模式