Vite 5.0 发布了!
2023 年 11 月 16 日

Vite 4 于近一年前发布,它为整个生态系统打下了坚实的基础。随着项目不断建立在共享的基础设施之上,每周的 npm 下载量从 250 万次跃升至 750 万次。框架持续创新,除了 Astro、Nuxt、SvelteKit、Solid Start、Qwik City 等之外,我们还看到新的框架加入并壮大了生态系统。RedwoodJS 和 Remix 转向 Vite,为 React 生态系统的进一步采用铺平了道路。Vitest 的增长速度甚至超过了 Vite。其团队一直致力于开发,并即将 发布 Vitest 1.0。Vite 与 Storybook、Nx 和 Playwright 等其他工具结合使用的体验持续改善,在环境方面也是如此,Vite 开发服务器现已支持在 Deno 和 Bun 中运行。
上个月,我们举办了由 StackBlitz 主办的第二届 ViteConf。像去年一样,生态系统中的大多数项目齐聚一堂,分享想法并建立联系,以持续扩展公共资源。我们还看到了一些新的组件补充了元框架工具链,例如 Volar 和 Nitro。Rollup 团队在同一天发布了 Rollup 4,延续了 Lukas 去年开创的传统。
六个月前,Vite 4.3 发布了。该版本显著提升了开发服务器的性能。然而,仍有很大的改进空间。在 ViteConf 上,尤雨溪(Evan You)公布了 Vite 关于 Rolldown 的长期计划,这是一个使用 Rust 编写的、API 与 Rollup 兼容的构建工具。一旦准备就绪,我们打算在 Vite Core 中使用它来承担 Rollup 和 esbuild 的任务。这意味着构建性能将得到提升(随着我们将 Vite 本身对性能敏感的部分迁移到 Rust,开发性能也会随之提升),并大大减少开发和构建环境之间的不一致。Rolldown 目前处于早期阶段,团队正准备在今年年底前开源其代码库。敬请期待!
今天,我们标志着 Vite 发展历程中的又一个重要里程碑。Vite 团队、贡献者以及生态系统合作伙伴非常激动地宣布 Vite 5 的发布。Vite 现在使用 Rollup 4,这已经带来了构建性能的巨大提升。此外,还有新的选项可以优化您的开发服务器性能。
Vite 5 专注于清理 API(移除已弃用的功能),并简化了多项功能,解决了长期存在的问题,例如将 define 切换为使用正确的 AST 替换,而不是正则表达式。我们还继续采取措施,使 Vite 能够面向未来(现在需要 Node.js 18+,并且 CJS Node API 已被弃用)。
快速链接
其他语言的文档
如果您是 Vite 的新手,我们建议您先阅读 入门 和 特性 指南。
我们非常感谢超过 850 名 Vite Core 贡献者,以及帮助我们走到这一步的 Vite 插件、集成、工具和翻译的维护者和贡献者。我们鼓励您参与进来,与我们一起继续改进 Vite。您可以在我们的 贡献指南 中了解更多信息。为了开始贡献,我们建议 对 issue 进行分类、审查 PR、根据开放的 issue 发送包含失败测试用例的 PR,并在 Discussions 和 Vite Land 的 帮助论坛 中帮助他人。您会在过程中学到很多,并为进一步向项目做出贡献铺平道路。如果您有疑问,欢迎加入我们的 Discord 社区,并在 #contributing 频道 打个招呼。
要获取最新资讯,请在 X 或 Mastodon 上关注我们。
Vite 5 快速入门
使用 pnpm create vite 来使用您喜欢的框架搭建 Vite 项目,或者通过 vite.new 在线打开启动模板来尝试 Vite 5。您还可以运行 pnpm create vite-extra 来获取其他框架和运行时(Solid、Deno、SSR 和库启动模板)的模板。当您在 create vite 中选择 Others 选项时,也可以使用 create vite-extra 模板。
请注意,Vite 启动模板旨在作为测试 Vite 与不同框架配合使用的演练场。在构建下一个项目时,我们建议使用每个框架官方推荐的启动器。现在,某些框架在 create vite 中也会重定向到它们自己的启动器(如 Vue 的 create-vue 和 Nuxt 3,以及 Svelte 的 SvelteKit)。
Node.js 支持
Vite 不再支持已达到 EOL(生命周期终止)的 Node.js 14 / 16 / 17 / 19。现在需要 Node.js 18 / 20+。
性能
除了 Rollup 4 的构建性能提升之外,我们还提供了一份新指南,帮助您识别和解决常见的性能问题:https://vite.org.cn/guide/performance。
Vite 5 还引入了 server.warmup,这是一项旨在提高启动速度的新功能。它允许您定义一个模块列表,这些模块应在服务器启动时立即进行预转换。当使用 --open 或 server.open 时,Vite 还会自动预热应用程序的入口点或您提供的 URL。
主要变化
- Vite 现在由 Rollup 4 驱动
- CJS Node API 已被弃用
- 重构了
define和import.meta.env.*的替换策略 - SSR 外部化模块的值现在与生产环境保持一致
worker.plugins现在是一个函数- 允许路径包含
.的请求回退到 index.html - 统一开发和预览 HTML 的服务行为
- 默认情况下,清单(Manifest)文件现在生成在
.vite目录中 - CLI 快捷键现在需要额外按下
Enter键 - 更新了
experimentalDecorators和useDefineForClassFields的 TypeScript 行为 - 移除了
--https标志和https: true - 移除了
resolvePackageEntry和resolvePackageDataAPI - 移除了之前已弃用的 API
- 阅读有关影响插件和工具作者的高级更改的更多信息
迁移到 Vite 5
我们与生态系统合作伙伴合作,确保平稳迁移到这个新的主版本。再次强调,vite-ecosystem-ci 对于帮助我们做出更大胆的改变同时避免回归至关重要。我们很高兴看到其他生态系统也采用了类似的方案,以改善其项目与下游维护者之间的协作。
对于大多数项目,更新到 Vite 5 应该是非常直接的。但我们建议在升级前查阅 详细的迁移指南。
有关 Vite 核心变更的完整列表,可以在 Vite 5 更新日志 中找到。
鸣谢
Vite 5 是我们的贡献者社区、下游维护者、插件作者和 Vite 团队共同努力的结果。特别感谢 Bjorn Lu 领导了这个主版本的发布过程。
我们还要感谢资助 Vite 开发的个人和公司。StackBlitz、Nuxt Labs 和 Astro 继续通过聘用 Vite 团队成员来投资 Vite。感谢在 Vite GitHub Sponsors、Vite Open Collective 和 尤雨溪 GitHub Sponsors 上的赞助商。特别提及 Remix,感谢他们在切换到 Vite 后成为金牌赞助商并做出回馈。
