Vite 的新改动:Rolldown-Vite 来袭🚀🚀🚀

前言

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 installyarn,就可以开始体验 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 的成长,共同推动前端开发的进步!🎉

相关推荐
诗和远方14939562327341 分钟前
KSCrash中僵尸对象监控原理与实现
前端
XXXFIRE2 分钟前
前端必学:💻Mac + Nginx 部署 Vue3 静态项目
运维·前端
aiweker3 分钟前
python web开发-Flask 重定向与URL生成完全指南
前端·python·flask
Onion3 分钟前
CodeWave集成wujie微前端路由跳转思路
前端
用户3802258598244 分钟前
vue3源码解析:应用挂载流程分析
vue.js
伍哥的传说10 分钟前
daisyUI 扩展之 pin input 组件开发,极致pin码输入框
前端·javascript·react.js·交互
云小遥38 分钟前
Cornerstone3D 2.x升级调研
前端·数据可视化
李明卫杭州44 分钟前
浅谈JavaScript中Blob对象
前端·javascript
springfe010144 分钟前
Cesium 3D地图 图元 圆柱 图片实现
前端·cesium
meng半颗糖1 小时前
vue3 双容器自动扩展布局 根据 内容的多少 动态定义宽度
前端·javascript·css·vue.js·elementui·vue3