September 10, 2024
我们很高兴地宣布 Rsbuild 1.0 已经正式发布!
长期以来,使用 webpack 的开发者饱受两个问题的困扰:构建慢和配置复杂。
我们使用 Rust 将 webpack 重写为 Rspack,解决了构建慢的问题。但为了兼容 webpack 生态,Rspack 保留了 webpack 的配置和 API,这意味着它依然存在一定的复杂度和学习成本。
在早期,webpack 生态中出现了一些优秀的工具,比如 Create React App(简称 CRA)和 Vue CLI,它们为 React 或 Vue 应用提供最佳实践,隐藏了复杂的 webpack 配置。因此,许多 React 和 Vue 用户使用这些工具来创建应用,不需要从零开始配置 webpack。
随着生态的发展,Next.js、Nuxt 和 Remix 等全栈 web 框架变得流行;Vite 推出后,作为一个轻量化的构建工具,也受到了众多开发者的青睐。而 CRA、Vue CLI 则是逐渐停止了维护。
当我们查看 webpack、CRA 和 Vue CLI 的 npm 下载量时,会发现仍然有大量项目在使用这些工具。例如,webpack 有约 2500 万的周下载量,CRA 有近 300 万的周下载量。这些项目有很多是 CSR 应用,不需要使用全栈框架的 SSR 等特性;Vite 看起来是一个不错的选择,但我们在字节跳动的项目中实践后发现,从 webpack 迁移到 Vite 存在很高的成本,并且迁移带来了一些新问题,例如开发环境与生产环境的构建产物不一致、大型应用在开发过程中页面刷新缓慢等问题。
对于 webpack 生态,我们发现了一个让人遗憾的事实:webpack 生态缺少一个易于使用且维护良好的构建工具,它既要像 CRA 和 Vue CLI 一样对用户友好,能够很好地满足 CSR 应用开发的需求,又需要像 Vite 一样具备快速启动、插件化等特性。
Rsbuild 是目前 webpack 和 Rspack 生态中最快的构建工具,下面是 Rsbuild 与 Create React App、Vite、Rspack CLI 的对比:
指标 | Create React App | Vite (with SWC) | Rspack CLI | Rsbuild | Rsbuild vs CRA |
---|---|---|---|---|---|
dev 启动时间(1000 个模块) | 5.47s | 1.29s | 0.66s | 0.39s | 快 14 倍 |
build 构建时间(1000 个模块) | 5.69s | 1.39s | 0.51s | 0.27s | 快 20 倍 |
npm 依赖数量 | 1241 | 15 | 283 | 14 | 减少 99% |
npm 安装体积 | 146.6MB | 56.3MB | 75.1MB | 59.1MB | 减少 60% |
与 Rspack CLI 相比,Rsbuild 内置了更丰富的功能,同时具备更好的性能表现。
这是因为 Rspack CLI 需要保持对 webpack-cli 的兼容性,它依赖了 webpack-dev-server
,并提供与 webpack 一致的默认行为,因此性能受到了一定限制。而 Rsbuild 是面向现代 web 开发设计的,我们为 Rsbuild 重新实现了更轻量的 CLI、开发服务器和构建流程,使其具备更快的启动速度和更少的 npm 依赖。
参考 Rsbuild 介绍 了解 Rsbuild 与 webpack、Vue CLI、Vite 的对比。
在 Rspack 1.0 发布公告 中,我们介绍了 Rspack 正在取得快速增长,这其中约有一半的 Rspack 用户已经在使用 Rsbuild,并给予我们很多正向的反馈。
在字节跳动,我们将 Rsbuild 作为内部研发框架的基石,支持了数千个 web 项目,这些项目涵盖了不同的使用场景,包括 desktop web 应用、mobile web 应用、跨平台 web 应用、文档站等。
在社区中,我们开源了基于 Rsbuild 的高性能工具链,包括静态站点生成器 Rspress,library 构建工具 Rslib,React 全栈框架 Modern.js,Storybook Rsbuild。得益于 Rsbuild 的可扩展性,这些工具能够灵活地集成 Rsbuild,并与它共享插件生态。
在 Rsbuild 1.0 发布后,我们也计划与 Remix 等优秀的团队一起探索,使 Rsbuild 能够与更多 web 框架集成。
欢迎为 Rsbuild GitHub 仓库 点亮一颗 Star 🌟。