多多读书
574 字
3 分钟
ViteConf 2023:Rolldown即将取代Rollup

在 ViteConf 2023 线上会议上,尤雨溪发表了《The State of Vite》的演讲,分享了 Vite 的现状和未来的计划。其中,一个值得关注的消息是 Vite 团队正在开发 Rolldown,这是一个基于 Rust 的 Rollup 移植版。

为什么要重新写一个打包工具?

Vite 目前底层使用 esbuild 和 Rollup 两个打包工具,在这些打包工具层次上仍然存在需要解决的问题,尤大在会上列举了用户反馈的一系列痛点:

  • 生产环境构建速度相对较慢。
  • 开发环境和生产环境之间不一致。
  • 开发环境下未打包的 ESM 模块会带来额外的网络开销。
  • SSR 外部依赖设置(externals)使用起来容易产生困惑。
  • 对代码分割的控制能力有限。
  • 暂时缺乏对 Module Federation(模块联邦)的内置支持。

esbuild 或 Bun 非常快速,为什么不使用?

尽管 esbuild 和 Bun 的构建速度很快,但它们在优化和控制资源方面的能力有限,而且它们提供的插件 API 不够灵活。

为什么放弃 Rollup?

Rollup 功能成熟且灵活,但速度较慢,对 ESM/CJS 互操作的支持也存在一些问题。

为什么不用 Turbopack?

Turbopack 是 Vercel 公司开发的 Web 构建工具,它使用 Rust 语言开发,具有高性能、兼容、可定制的特点。

考虑到目前 Turbopack 只能用在 Next 项目中,对于如何与 js 插件一起工作还没有明确前景,许多内部设计决策也不能 Vite 中得到良好的支持。

为什么不用 Rspack?

Rspack 也是基于 Rust 语言开发的 Web 构建工具,尤大在 X 上提到,相比起 Turbopack 来说,选择 Rspack 反而会更优,不过 Rspack 严重依赖 webpack 模式,与当前 Vite 模式不相符,需要优先考虑现有 Vite 用户的兼容性。

最后,Rolldown 仍处于早期的开发阶段,它还有很长的路要走才能真正替代 Vite 底层的打包工具。至于 Rust 在前端工具链中的使用越来越多,它也将影响着前端领域的未来方向。因此,我们有必要考虑是否要学习一门新的语言。

ViteConf 2023:Rolldown即将取代Rollup
https://fuwari.vercel.app/posts/20231006/
作者
我也困了
发布于
2023-10-06
许可协议
CC BY-NC-SA 4.0