Vue 团队已正式开源 Rolldown —— 基于 Rust 的 JavaScrip 打包工具。
Rolldown 是使用 Rust 开发的 Rollup 替代品,它提供与 Rollup 兼容的应用程序接口和插件接口,但在功能范围上更类似于 esbuild。
根据官方文档,Rolldown 旨在作为 Vite 未来使用的打包工具。目前 Vite 内部依赖两个打包工具:
- esbuild 用于依赖预打包、TypeScript 和 JSX 转换、目标降级以及代码压缩
- Rollup 用于生产构建使用,并支持一个与 Rollup 兼容的插件接口
然而,使用两个不同的打包工具存在明显弊端:
- 两者之间的输出差异可能导致开发环境与生产环境行为的不一致
- 用户代码在生产构建过程中会被多次解析、转换和序列化,从而增加了不必要的性能开销
因此,开发团队希望 Vite 能整合一个单一的打包工具,提供原生级性能、避免解析/序列化开销的内置转换、与 Rollup 兼容的插件接口,以及适合大规模应用的高级构建输出控制。
这就是 Rolldown 诞生的背景。
未来规划
Rolldown 采用 Rust 编写,基于 Oxc 构建,目前正在使用其解析器。
Oxc 是 Rust 编写的 JavaScript 高性能工具集合,由字节跳动团队创建。该项目的重点在于构建 JavaScript 的基本编译器工具:解析器、linter、格式化程序、转译器、压缩器和解析引擎。
团队还计划在 Oxc 的转换器和压缩工具将来可用时进行集成。团队的长期目标是让 Vite 用户(直接或间接通过框架)能够以最小的成本过渡到内部使用 Rolldown 的 Vite 版本。同时,Rolldown 还将作为独立的打包工具直接使用。