字节跳动近期与 Valor 软件开源了 Rspack,这是一款由 Rust 编写的 Web 捆绑,意在用更快、更直接的方式取代 Webpack。部分早期基准测试表明,Rspack 的冷启动时间有十倍的提升。字节跳动对其的开发主要为缓解 Rspack 在部分场景下生产构建时间长达十分钟至半小时,冷启动时间可超数分钟的问题。为降低迁移成本并维持 Webpack 配置机制所提供的灵活性和生产优化,Rspack 的功能设计如下:
快速启动:基于 Rust 的飞快构建速度,为你带来极致的开发体验。
模块热替换 (HMR):内置增量编译机制让 HMR 速度飞快的同时 ,也完全能胜任大型应用的开发
与 Webpack 的互操作性:与 Webpack 架构和生态系统相兼容,无需重新建立生态系统
内含电池:开箱即用的 TypeScript、JSX、CSS、CSS Modules、Sass 等支持
生产优化:内置多项默认优化策略,如摇树优化、最小化等等
框架无关:不受限于任何前端框架,确保足够的灵活性
速度的观测结果取决于设备、项目结构及规模。字节跳动是通过公开可用的 Webpack 基准测试工具,于自定义代码库中进行的基准测试。基准测试结果显示 Rspack 冷启动时间经过开发优化,相较使用 Babel 的 Webpack 提升了十倍有余,增量构建时间提升三倍。Nx 在其他代码库中也展示了类似的结果:
我们自行进行了初步的统计,也看到了一些很赞的改善。对大型组件而言,Rspack 的部署时间比 Webpack 快四倍,开发服务器的启动速度比目前 Webpack 的实现快五倍,总体生产构建的速度有了四倍的提升。
Rspack 虽然只在近期才开源,但其开发时长已有一年了。但不管怎么说,该项目仍处于早期阶段,缺乏许多 Webpack 的功能。Rspack 团队强调他们计划进一步加强对 Webpack 生态系统的支持:
Rspack 与 Webpack 的配置模式和 Loader 架构,人们可无缝使用熟悉的 Loader,如
babel-loader
、less-loader
、sass-loader
等等。我们的长期目标是为完全支持最为常用的 Loader,包括更为复杂的vue-loader
等情况。但要想实现 Webpack 的全部功能,我们还任重而道远。我们会基于社区反馈排列优先级,所以请告诉我们您的需求!
Rspack 最初是由字节跳动内部开发团队发起,内部开发者平台或一般平台工程团队正逐渐成为企业 DevOps 实践的一部分。
越来越多的 Web 工具链开始使用 Rust 来大幅提升其性能。热门的 Parcel 捆绑于去年宣发了一款使用 Rust 编写的新 CSS 解析器、编译器、粉碎器(比基于 JavaScript 的 CSSNano 快百倍,比基于 Go 的 ESBuild 快三倍)。两年前,Parcel 2 便已经用 Rust 对其 JavaScript 编译器进行了重写(构建性能提升十倍)前端工具链 Rome 于几个月前发布了一款基于 Rust 的新代码质量规则和格式化器,相比 ESLint 和 Prettier 有一至二个数量级的提升。Rolldown 是另一项进行中的项目,可提供与 Rollup 相兼容的 API。
Webpack、Parcel、Rollup,这些均是用于构建 Web 应用程序的最热门捆绑器。Rspack 是在 MIT 许可下发布的开源软件,欢迎反馈,但也应遵守贡献指南和行为准则。
原文链接:
New Rust-Based Web Bundler Rspack Touts up to 10X Speed Improvement over Webpack
相关阅读:
Webpack 创始人推出比 Webpack“快 700 倍”的 Turbopack,基于 Rust 编写
评论