前言
Hello~大家好。我是秋天的一阵风
今天要给大家带来一个令人兴奋的消息!Vite 的背后团队正在推动一项重大的技术革新------Rolldown-Vite。这不仅仅是一个更新,而是一次性能的飞跃,一次开发体验的全新升级。尤雨溪在公告中提到,Rolldown 将成为 Vite 的默认打包器,而这一切已经可以立即体验!🎉

一、Rolldown:Rust 语言铸就的高性能打包器🔧
在了解 Rolldown 之前,我们先来回顾一下 Vite 的过去。
Vite 一直使用 Rollup 和 esbuild 来处理打包任务。Rollup 以其强大的插件系统和出色的代码分割能力,成为了前端打包领域的佼佼者;而 esbuild 则以其惊人的构建速度,为 Vite 的开发服务器提供了强大的支持。然而,随着项目规模的不断扩大,开发团队逐渐发现,现有的打包工具在处理大型项目时,仍然存在一些性能瓶颈。于是,为了进一步提升 Vite 的性能,尤雨溪和他的团队决定开发一个新的打包器------Rolldown。
Rolldown 是一个基于 Rust 语言开发的下一代打包器。
Rust 以其卓越的性能和内存安全特性而闻名于世,这使得 Rolldown 在构建速度和资源占用方面有了质的飞跃。与传统的打包工具相比,Rolldown 的生产构建速度比 Rollup 快了 7 倍以上,尤其在处理大型项目时,这种性能优势更加明显。更重要的是,Rolldown 统一了开发和生产环境的打包逻辑,解决了之前 esbuild(开发环境)和 Rollup(生产环境)带来的不一致问题,让开发者可以更加专注于代码的编写,而无需担心打包工具带来的差异。
二、Rolldown 的核心优势🌟
(一)惊人的构建速度🚀
在实际测试中,Rolldown 的构建速度提升令人惊叹。以 GitLab 为例,其构建时间从 2.5 分钟缩短至 40 秒,内存使用量更是减少了 100 倍。Excalidraw 的构建时间从 22.9 秒降至 1.4 秒,速度提升了 16 倍。这些数据不仅仅是数字上的变化,更是开发效率的巨大提升。更快的构建速度意味着开发者可以更频繁地进行代码提交和测试,从而加速整个开发流程。
(二)统一的打包逻辑🔗
在 Vite 的早期版本中,开发环境使用 esbuild,而生产环境则使用 Rollup。这种差异导致了在开发和生产环境中,打包行为可能不一致,给开发者带来了不少困扰。Rolldown 的出现完美地解决了这一问题。它统一了开发和生产环境的打包逻辑,让开发者在任何环境下都能获得一致的打包体验。无论是开发环境中的热模块替换(HMR),还是生产环境中的代码压缩和优化,Rolldown 都能够无缝衔接,极大地提高了开发的便利性和稳定性。
(三)强大的插件生态系统🔌
为了确保与现有 Vite 插件的兼容性,Rolldown 保留了 Rollup 的插件 API。这意味着开发者可以继续使用他们熟悉的 Rollup 插件,而无需进行大量的修改。同时,Rolldown 还引入了一些高级功能,如模块联邦和内置热模块替换(HMR),为开发者提供了更多的灵活性和扩展性。模块联邦允许开发者在不同的微前端应用之间共享代码,而无需进行复杂的配置;内置的 HMR 则让开发者可以在开发过程中即时看到代码的更改,极大地提高了开发效率。
三、Oxc:Rolldown 的秘密武器
Rolldown 的强大性能背后,是 Oxc 的支持。Oxc 是一套高性能的 JavaScript 工具,包括解析器、转换器、压缩器等。它为 Rolldown 提供了高效的 JavaScript 和 TypeScript 处理能力,是 Rolldown 的基础层。Oxc 的出现,让 Vite 的构建过程更加高效、稳定。
四、如何使用 Rolldown-Vite
使用 Rolldown-Vite 非常简单。如果你已经有一个 Vite 项目,只需要在 package.json
中将 vite
替换为 rolldown-vite
,然后运行 npm install
或 yarn
,就可以开始体验 Rolldown 的强大性能了。
JSON
{
"dependencies": {
"vite": "npm:rolldown-vite@latest"
}
}
如果你使用的是 VitePress 或其他将 Vite 列为对等依赖项的元框架,可以通过覆盖的方式替换 vite
包:
JSON
{
"overrides": {
"vite": "npm:rolldown-vite@latest"
}
}
就这样,你就可以像往常一样使用 Vite,同时享受 Rolldown 带来的额外性能提升。🎉
五、兼容性与未来展望
尽管 Rolldown-Vite 目前已经达到了与当前 Vite 相同的初始功能,但兼容性仍然是团队的首要任务。为了确保流畅的体验,团队创建了一个 Vite 生态系统 CI 的分叉版本,并基于它运行 Rolldown-Vite。虽然大多数框架和插件已经通过了测试,但某些框架或高级用例可能仍然存在兼容性问题。如果你遇到问题,建议查看 Rolldown 迁移指南,或者直接在代码库中报告问题。
未来,Vite 团队计划将 Rolldown 过渡分为三个阶段。
- 第一阶段,Rolldown-Vite 作为独立软件包提供给早期用户;
- 第二阶段,所有变更将在稳定后合并到 Vite 主代码库中;
- 第三阶段,全捆绑模式将成为 Vite 的默认模式。这意味着,Rolldown-Vite 的未来已经明确,它将成为 Vite 的核心部分。
🎉 总结 🎉
Vite 一直以来都是前端开发领域的佼佼者,而 Rolldown-Vite 的出现,更是将 Vite 的性能提升到了一个新的高度。尤雨溪和他的团队通过不断的努力和创新,为我们带来了这样一个强大的工具。现在,你可以立即在你的项目中尝试 Rolldown-Vite,体验它的强大性能。你的反馈将有助于塑造 Vite 打包基础设施的未来,让我们一起期待 Vite 在 Rolldown 的助力下,迈向更加辉煌的明天!🚀
最后,别忘了加入 Rolldown Discord,与其他开发者一起交流经验,分享你的使用感受。让我们一起见证 Vite 的成长,共同推动前端开发的进步!🎉