Skip to content

Rolldown 集成

Vite 计划将由 Rust 驱动的 JavaScript 打包工具 Rolldown 集成进来,以提升构建的性能和功能。

Rolldown 是什么?

Rolldown 是一个现代化、高性能的 JavaScript 打包工具,由 Rust 编写。它被设计为 Rollup 的替代品,旨在保持与现有生态系统兼容的同时,显著提升性能。

Rolldown 专注于三个主要原则:

  • 速度:利用 Rust 的高性能进行构建
  • 兼容性:能够与现有的 Rollup 插件一起工作
  • 开发者体验:为 Rollup 用户提供熟悉的 API

为什么 Vite 要迁移到 Rolldown

  1. 统一:Vite 目前使用 esbuild 进行依赖预打包,使用 Rollup 进行生产构建。Rolldown 的目标是将这两个过程统一到一个高性能的打包工具中,以降低复杂性。

  2. 性能:Rolldown 的 Rust 实现在性能上比基于 JavaScript 的打包工具有显著的提升。虽然具体的基准测试可能会因项目大小和复杂性而有所不同,但早期的测试显示,与 Rollup 相比,Rolldown 的速度提升是有希望的。

关于 Rolldown 的动机有更多的见解,可以参见 为什么要构建 Rolldown 的原因

尝试 rolldown-vite 的好处

  • 对于大型项目,可以显著提升构建速度
  • 提供有价值的反馈,帮助塑造 Vite 的打包体验的未来
  • 为最终的官方 Rolldown 集成做好准备

如何尝试 Rolldown

目前,由 Rolldown 驱动的 Vite 版本已经作为一个名为 rolldown-vite 的独立包发布。你可以通过在你的 package.json 中添加 package overrides 来试用它:

json
{
  "overrides": {
    "vite": "npm:rolldown-vite@latest"
  }
}
json
{
  "resolutions": {
    "vite": "npm:rolldown-vite@latest"
  }
}
json
{
  "pnpm": {
    "overrides": {
      "vite": "npm:rolldown-vite@latest"
    }
  }
}
json
{
  "overrides": {
    "vite": "npm:rolldown-vite@latest"
  }
}

在添加 overrides 之后,重新安装你的依赖并像往常一样启动你的开发服务器或构建你的项目即可,无需进一步的配置更改。

已知限制

虽然 Rolldown 的目标是成为 Rollup 的替代品,但还有一些特性正在实现中,以及一些小的有意的行为差异。需要查看完整的列表,请参考 这个 GitHub PR,它会定期更新。

反馈问题

由于这是一个实验性的集成,你可能会遇到一些问题。如果你遇到问题,请在 vitejs/rolldown-vite 仓库中反馈,而不是主 Vite 仓库

上报问题 时,请按照问题模板提供:

  • 问题的最小复现
  • 你的环境详细信息(操作系统,Node 版本,包管理器)
  • 任何相关的错误信息或日志

如果你想进行实时讨论和故障排除,请确保加入 Rolldown Discord

未来计划

rolldown-vite 包是一个临时的解决方案,用于收集反馈和稳定 Rolldown 的集成。在未来,这个功能将被合并回主 Vite 仓库。

我们鼓励你尝试 rolldown-vite 并通过反馈和问题报告来参与其开发工作。

Released under the MIT License. (dev)