尤雨溪宣布Rolldown-Vite发布,前端工具链统一进程将加速推进!

前言

2025 年 5 月 30 日,VoidZero 团队发布了一篇博客,宣布 Rolldown-Vite 的发布预览版!随着预览版的发布,下一代统一的前端构建工具正加速到来,社区戏称的"前端秦始皇" 或许即将成为现实!

本文是博客的翻译兼解读。原博文地址: voidzero.dev/posts/annou...

快来尝试由 Rolldown 驱动的 Vite!

只需使用 rolldown-vite 包代替默认的 vite 包即可。这是一个直接替代品,因为 Rolldown 未来将成为 Vite 的默认打包器。切换后应能减少您的构建时间,尤其是在大型项目中。欢迎联系以了解生产环境用例!

过去一年,我们一直在开发 Rolldown,一个基于 Rust 的下一代打包器,作为现代化 Vite 核心工作的一部分。

与 Rolldown 一同开发的还有 Oxc,一个高性能 JavaScript 工具集,包含解析器 (parser)、转换器 (transformer)、解析器 (resolver)、压缩器 (minifier),以及一个 linter,并且很快还将包含一个格式化工具 (formatter)。

Oxc作为 Rolldown 的基础层,为高效处理 JavaScript 和 TypeScript 提供了必要的构建模块。

今天,我们激动地宣布,基于 Rolldown 的 Vite 版本已初步实现与当前 Vite 的功能对等!(泪目)

这意味着您可以将其作为直接替代品进行尝试,并在技术预览版中立即体验其优势。

得益于早期采用者,我们能够在从基础设置到大型企业应用的各种项目中测试 rolldown-vite

结果令人印象深刻:生产构建时间减少了 3 倍到 16 倍 ,构建过程中的内存使用量最多减少了 100 倍

我们鼓励您尝试 rolldown-vite 并分享反馈,为 Vite 打包基础设施的未来发展做出贡献。

使用 rolldown-vite

开始使用 rolldown-vite 非常简单。如果您已有 Vite 项目,可以通过在 package.json 中使用别名将 vite 包替换为 rolldown-vite

json 复制代码
{
  "dependencies": {
    "vite": "npm:rolldown-vite@latest"
  }
}

如果您使用 VitePress 或将 Vite 列为对等依赖 (peer dependency) 的元框架 (meta-framework),可以在项目中使用 overridesvite 包替换为 rolldown-vite

json 复制代码
{
  "overrides": {
    "vite": "npm:rolldown-vite@latest"
  }
}

就这样!现在您可以像往常一样继续使用 Vite,但还能获得 Rolldown 带来的额外性能优势。

您可能会看到一些关于尚未支持的选项或已弃用 API 的警告信息------我们将持续在整个生态系统中解决这些问题。

rolldown-vite 目前作为一个独立的包分发,以便快速迭代,并将反馈和问题与主 vite 包分开。这种分离有助于在 Rolldown 集成成熟期间确保现有用户的稳定性。

一旦 rolldown-vite 稳定,其变更将被合并到 Vite 中,独立的包将被弃用。

它也遵循 Vite 的主版本号和次版本号以保持兼容性,但其补丁版本号是独立的,并且在开发过程中可能引入破坏性变更。有关最新更新和详细信息,请参阅 rolldown-vite changelog

确保兼容性

兼容性是 rolldown-vite 的首要任务。

为确保流畅体验,我们创建了一个 Vite 生态系统 CI 的分支版本,并针对 rolldown-vite 运行。我们已经让大多数框架和插件的测试通过了,但请注意某些框架或高级用例可能仍存在兼容性差距。我们还建议查看 Rolldown 迁移指南 以获取最新的兼容性说明、已知问题和迁移技巧。如果您遇到问题,请报告,以便我们改进整个生态系统的支持。

esbuild 作为可选依赖

在当前稳定版的 Vite 中,esbuild 是一个核心依赖,用于诸如转换和压缩生产构建等任务,并为开发服务器的部分功能提供支持。许多 Vite 插件也通过 Vite 提供的实用函数(如文件转换)依赖 esbuild。

在使用 rolldown-vite 时,esbuild 不再是必需的 。相反,所有内部转换和压缩都由 Oxc 处理,通过单一基础层提高了性能。这意味着除非您使用的 Vite 插件明确需要 esbuild 且尚未支持 Oxc 转换,否则您无需安装 esbuild 作为依赖项。

我们正在积极与插件和框架作者合作,确保在使用 rolldown-vite 时,Vite 插件能自动利用 Oxc 转换,从而实现更快的构建。

插件作者

如果您是插件作者,无论是 Vite 插件还是 Rollup 插件,都可以立即开始使用 rolldown-vite 测试您的插件。许多插件应该开箱即用,但有些可能需要调整,原因可能是兼容性或性能。更多详情请参阅我们的插件作者指南

实际影响

rolldown-vite 仍在开发中,但从小型项目到大型企业应用的早期采用者已经看到了显著成效。

一些亮点:

  • GitLab:构建时间从 2.5 分钟降至仅 40 秒,内存使用量减少了 100 倍。
  • Excalidraw:构建时间从 22.9 秒降至 1.4 秒(快 16 倍)。
  • PLAID Inc.:一个前端构建时间从 1 分 20 秒降至 5 秒(快 16 倍)。
  • Appwrite:构建时间从超过 12 分钟降至仅 3 分钟,内存使用量减少了 4 倍。
  • Particl:相比 Vite 实现了近 10 倍加速(相比 Next.js 近 29 倍),构建时间从超过 1 分钟降至仅 6 秒。

这些结果不仅显示了更快的构建速度,而且在某些情况下,内存使用量也减少了几个数量级。更多详情或分享您自己的结果,请访问 vitejs/rolldown-vite-perf-wins 仓库。

哦,还有件有趣的事------您正在阅读的这篇博客文章就是使用运行在 Rolldown-Vite 之上的 VitePress 构建的,其在 Netlify 上的生产构建仅需 1.8 秒。

下一步计划?

Vite 通常以其基于原生 ESM 的免打包开发服务器 (unbundled dev server) 而闻名,这带来了快速的启动时间和近乎即时的反馈。

然而,我们发现这种方法在非常规规模的项目(尤其是在企业设置中)存在局限性。为了解决这些问题,我们正在为开发服务器开发一个全打包模式 (full-bundle mode)

借助 Rolldown 的性能,该模式旨在改善大型项目的开发服务器启动时间,同时保持甚至提升中小型项目的启动速度。

与此同时,我们计划将 Vite 内部更多的部分进行 "Rust 化" (rustify),以减少通信开销并释放更大的性能提升。

Vite 中 Rolldown 的路线图

我们为过渡到 Rolldown 规划了三个阶段,每个阶段都旨在确保平稳迁移,同时收集社区的宝贵反馈:

阶段一(当前)rolldown-vite 作为独立包提供给早期采用者。这使我们能够根据实际使用情况收集反馈并进行改进。

阶段二 :当 rolldown-vite 被认为稳定后,其所有变更将合并到主 Vite 代码库中。同时还将引入一个开发用的可选的全打包模式 。此时 rolldown-vite 包将被弃用。

阶段三:全打包模式将成为 Vite 的默认开发模式。

在撰写本文时,我们预计每个阶段将持续数月。请注意,具体时间将取决于多种因素,最重要的是社区的反馈、实际使用情况、稳定性以及兼容性。

立即尝试吧!

我们鼓励您立即在项目中尝试 rolldown-vite!您的反馈将有助于塑造 Vite 打包基础设施的未来。如果您遇到任何问题,例如功能缺失或损坏、错误信息不清晰或性能下降,请务必在 rolldown-vite 仓库不是 主 Vite 仓库)中报告。如果您想实时提问或讨论,请加入 Rolldown Discord

相关推荐
你才是向阳花1 小时前
前端限流如何实现,如何防止服务器过载
运维·服务器·前端
开开心心就好2 小时前
免费批量文件重命名软件
vue.js·人工智能·深度学习·typescript·pdf·excel·less
站在风口的猪11082 小时前
《前端面试题:BFC(块级格式化上下文)》
前端·css·css3
czliutz4 小时前
NiceGUI 是一个基于 Python 的现代 Web 应用框架
开发语言·前端·python
koooo~5 小时前
【无标题】
前端
Attacking-Coder6 小时前
前端面试宝典---前端水印
前端
姑苏洛言8 小时前
基于微信公众号小程序的课表管理平台设计与实现
前端·后端
烛阴8 小时前
比UUID更快更小更强大!NanoID唯一ID生成神器全解析
前端·javascript·后端
Alice_hhu9 小时前
ResizeObserver 解决 echarts渲染不出来,内容宽度为 0的问题
前端·javascript·echarts
逃逸线LOF10 小时前
CSS之动画(奔跑的熊、两面反转盒子、3D导航栏、旋转木马)
前端·css