Rolldown,一个与Rollup兼容的基于Rust的JavaScript打包器现已开源

Rolldown:基于 Rust 的高性能 JavaScript 打包工具

Rolldown 是一个用 Rust 编写的新 JavaScript 打包工具,旨在提供高性能,并与 Rollup 的 API 和插件兼容。该项目由 Vue 框架的创建者 Evan You 领导,计划成为 Vite 的下一个打包工具。

背景与动机

随着 JavaScript 在大型应用中的广泛使用,开发者对开发体验的要求不断提高。近年来,基于 Rust 的 JavaScript 工具链(如 linter、parser、builder)逐渐占据重要地位,旨在为开发者提供更快的迭代周期,即使面对大型代码库。

Vite 已成为几乎所有主流元框架的标准开发和构建环境,而 Rollup 仍然是这些框架的底层打包工具。然而,Rollup 的性能仍有提升空间。esbuild 展示了原生打包工具的速度优势,但它与 Rollup 不兼容,且存在一些不足(如不支持 TypeScript、有限的 tree shaking 等)。Rolldown 的目标是提供更快的构建时间,同时尽可能利用现有的 Rollup 生态系统。

Rolldown 的设计与优势

Rolldown 被设计为 Vite 未来的底层打包工具,Vite 用户可以无缝过渡到使用 Rolldown 的版本。它也可以作为独立的打包工具使用。Rolldown 的性能提升不仅仅源于 Rust 代码编译为原生二进制文件,还包括以下设计选择:

  1. 完全用 Rust 编写:与在 Rollup 中逐步引入 Rust 模块相比,完全用 Rust 编写工具可以避免 Rust 和 JavaScript 之间数据传递的开销。
  2. 并行执行:Rust 使得在多核设备上安全并行运行代码更加容易,从而实现最优性能。
  3. 单一解析与 AST 树:Rolldown 将使用单一的解析和 AST 树,减少重复解析和序列化的开销。

这些设计使得 Rolldown 在性能上得以显著提升。

Rust 在 JavaScript 工具链中的崛起

Rust 逐渐成为构建快速工具链的首选语言。随着越来越多的工具链采用 Rust,它从一个冷门选择变成了一个合理的语言选项。Rolldown 是 Rust 工具链家族的最新成员,其他类似工具包括:

  • Rspack:兼容 Webpack 的打包工具。
  • esbuild:快速的 Web 打包工具。
  • Biome:用于格式化和 linting JavaScript 代码的工具。
  • SWC:基于 Rust 的 Web 平台编译器和打包工具。
  • Oxc:集成了解析、linting、解析、格式化、压缩等功能的工具。

项目现状与贡献

Rolldown 目前仍处于早期阶段,团队正在积极寻找长期贡献者。有兴趣的开发者可以查看项目的贡献指南和行为准则。Rolldown 是一个 MIT 许可的开源项目,代码托管在 GitHub 上。

通过结合原生代码、并行执行和更智能的算法,Rolldown 有望成为未来 JavaScript 打包工具的重要选择。

阅读 25
0 条评论