Vite 未来使用的打包工具,正式开源了!

开发 开发工具
Rolldown 力图在最大程度上与 Rollup 的 API 和插件体系保持兼容,以简化用户的迁移过程。对于一些基础应用场景来说,Rolldown 有望直接替代现有工具。

3 月 8 号,Rolldown[1] 正式开源了,它是一个基于 Rust[2] 语言开发的 JavaScript 打包器,其设计目标是成为 Vite 在未来将要采用的核心打包工具。它不仅提供了与 Rollup 兼容的 API 和插件体系,而且在功能范围上,它更加贴近于 esbuild[3] 的设计理念。

图片图片

Rolldown 基于 Rust 语言开发,并且是在 Oxc[4] 基础架构上构建的。目前,Rolldown 内部已经在使用 Oxc 提供的 parser 和 resolver。未来,随着 Oxc 转换和压缩功能的推出,它们也会被整合到 Rolldown 中。

图片图片

为什么设计 Rolldown

Rolldown 设计初衷是作为 Vite 未来采用的底层打包工具。

目前,Vite 在内部整合了两款打包工具:

  • esbuild,由 Evan Wallace 开发。Vite 利用 esbuild 完成依赖的预打包、TypeScript / JSX 的转换、代码的降级处理以及代码压缩。
  • Rollup,由 Rich Harris 创立,并由 Lukas Taegert-Atkinson 维护。Vite 在其生产环境构建中使用 Rollup,并且支持与 Rollup 兼容的插件接口。

之所以同时采用这两种打包工具,是因为虽然它们各有卓越之处,但同时也各自缺乏对方所具备的某些功能:

  • esbuild 的执行速度极快,功能全面,但其打包输出,尤其是在代码分割方面,对于应用打包而言并不尽如人意。
  • Rollup 在应用打包方面经过了严格的实战检验,成熟稳定,但相比于编译为原生语言的打包工具,它的速度要慢得多。

不得不依赖两套打包工具存在以下几个不理想的地方:

  • 不同工具输出之间的微小差异,可能会导致开发环境与生产环境构建的行为表现不一致。
  • 在生产环境构建过程中,用户源代码需要被多个工具反复进行解析、转换和序列化,这导致了大量不必要的开销。

我们理想中的情景是,Vite 能够使用一种单一的打包工具,这款工具不仅能提供近乎原生的性能,还能内置转换功能以减少解析和序列化的开销,同时,它还需要有与 Rollup 兼容的插件接口,并且能提供适合大型应用的先进构建输出控制功能。

Rolldown vs Rollup

Rolldown 力图在最大程度上与 Rollup 的 API 和插件体系保持兼容,以简化用户的迁移过程。对于一些基础应用场景来说,Rolldown 有望直接替代现有工具。然而,在处理一些特殊情况,特别是在涉及到复杂配置时,可能会遇到轻微的差异。

最初,Rolldown 开发团队计划将 JavaScript 代码转换为 Rust 实现,但很快他们发现,要想充分发挥 Rust 的性能优势,就必须按照 Rust 的特性来编写代码。因此,Rolldown 的内部架构更偏向 esbuild 而非 Rollup,并且我们在代码块分割的逻辑处理上,也会与 Rollup 存在差异。

与此同时,Rolldown 涵盖的功能比 Rollup 更为广泛,与 esbuild 更为相似。它内部支持 CommonJS 规范、node_modules 的解析,并且计划在未来增加对 TypeScript/JSX 的转换以及代码压缩的支持。

Rolldown Roadmap

Rolldown 目前正处于积极开发阶段,还未适用于生产环境。Rolldown 开发团队选择开放源代码,以便开始与社区贡献者合作,推动 Rolldown 的发展。

图片图片

为了追求速度和更好地开发体验,在前端基建领域,越来越多工具采用 Rust 来构建。不过 Rust 学习成本挺高的,2024 年 Rust 你还学得动么?如果你已经上手 Rust,可以一起参与 Rolldown 开源项目。

参考资料

[1]Rolldown: https://rolldown.rs/

[2]Rust: https://www.rust-lang.org/

[3]esbuild: https://esbuild.github.io/

[4]Oxc: https://oxc-project.github.io/

责任编辑:武晓燕 来源: 全栈修仙之路
相关推荐

2024-03-11 00:07:00

VueRustGo

2024-10-09 14:07:05

2018-05-30 15:33:00

打包工具Web

2024-09-02 00:00:01

2021-10-27 07:47:21

Vite 工具项目

2022-10-24 09:42:31

2022-01-04 10:51:11

工具开源PDF

2022-04-14 11:26:09

浏览器扩展开源Firefox

2014-12-09 12:57:19

AnySDK

2022-07-17 06:48:39

Vite 3.0前端工具链

2021-05-11 09:20:38

Webpack工具模块

2024-03-08 08:40:25

2009-12-15 17:53:18

Ruby标准库

2024-08-22 14:47:50

开源Linux网络抓包工具

2015-07-20 11:39:33

Windows 10正式版

2023-04-21 10:10:07

Vite 4.3前端

2021-05-31 17:37:26

ViteReactesbuild

2021-12-25 22:29:04

WebpackRollup 前端

2019-11-28 13:58:47

推荐技术Python算法

2024-11-01 13:31:28

RustViteRsbuild
点赞
收藏

51CTO技术栈公众号