有点失望了,Vite 6 的发布更像是一个“过渡版本”!

开发 前端
Vite 6​ 既没有像 Vite 3​ 引入的 ESBuild 替代 Terser,也没有像 Vite 4 强化 SSR 性能那样的“大刀阔斧”。相反,Vite 6 的重点更像是在为未来的 Vite 7 做铺垫,通过优化现有功能、实验性新特性和现代化迁移支持,提供了一个平滑过渡的版本。

Hello,大家好,我是 Sunday。

11月26日,vite 6 官宣发布,第一时间我就去看了对应的官方文档。

图片图片

看完之后只有一个感觉,那就是 “失望”。 vite 6 的升级更像是一个过渡版本,借此来去推出一些 实验性质的功能 以及 发布一些过期声明。

从更新内容来看,Vite 6 既没有像 Vite 3 引入的 ESBuild 替代 Terser,也没有像 Vite 4 强化 SSR 性能那样的“大刀阔斧”。相反,Vite 6 的重点更像是在为未来的 Vite 7 做铺垫,通过优化现有功能、实验性新特性和现代化迁移支持,提供了一个平滑过渡的版本。

不过,过渡版本≠没有价值。今天就让咱们花上几分钟的时间,来详细了解下 vite 6 都带来了哪些新的内容,以及 为何说它是个 “过渡版本”!

vite 6 都带来了哪些新的内容

1. 引入实验性环境 API

Vite 6 推出了新的实验性环境 API,允许开发者根据应用的生产环境需求 创建多个环境配置。这使得在开发和构建过程中,可以更精确地模拟不同的运行环境,从而提高开发效率和代码质量。

对开发者的影响:对于使用单一客户端环境的 SPA 应用,现有配置无需更改。但对于需要多环境支持的应用,新的环境 API 提供了更大的灵活性,开发者可以根据需要定义和配置不同的环境。

2. 默认解析条件的更新

在 Vite 5 中,resolve.conditions 的默认值为 [],某些条件是内部添加的。在 Vite 6 中,这些条件不再被内部添加,需要在配置中明确指定。例如,resolve.conditions 的默认值现在是 ['module', 'browser', 'development|production']。

对开发者的影响:如果在项目中使用了自定义的解析条件配置,需要检查并更新配置,以确保包含新的默认条件,避免解析问题。

3. JSON 处理的改进

Vite 6 对 JSON 文件的处理进行了调整。即使设置了 json.stringify: true,json.namedExports 也不会被禁用。此外,json.stringify 引入了新的默认值 'auto',仅对大型 JSON 文件进行字符串化处理。

对开发者的影响:开发者需要根据项目需求,检查并调整 JSON 相关配置,以确保 JSON 文件的处理符合预期。

4. 扩展对 HTML 元素中资源引用的支持

Vite 6 扩展了对更多 HTML 元素中资源引用的支持。现在,更多的 HTML 元素可以引用由 Vite 处理和打包的资源。要在某些元素上选择不进行 HTML 处理,可以在元素上添加 vite-ignore 属性。

对开发者的影响:这使得开发者在处理 HTML 模板时有了更大的灵活性,可以更方便地管理资源引用。

5. Sass 默认使用现代 API

在 Vite 5 中,Sass 默认使用传统 API。从 Vite 6 开始,Sass 默认使用现代 API。如果需要继续使用传统 API,可以在配置中设置 css.preprocessorOptions.sass.api: 'legacy'。

对开发者的影响:建议开发者迁移到现代 API,以利用其性能和功能优势。需要注意的是,传统 API 支持将在 Vite 7 中移除。

6. 在库模式下自定义 CSS 输出文件名

在 Vite 5 中,库模式下的 CSS 输出文件名始终是 style.css,无法通过配置轻松更改。从 Vite 6 开始,默认文件名将使用 package.json 中的 "name",与 JS 输出文件类似。如果需要明确设置不同的 CSS 文件名,可以使用新的 build.lib.cssFileName 进行配置。

对开发者的影响:开发者可以更灵活地管理库模式下的 CSS 输出文件名,满足不同项目的需求。

7. 其他改进和修复

Vite 6 还包含其他改进和修复,例如:

  • build.cssMinify 在 SSR 中默认为 'esbuild'。
  • server.proxy[path].bypass 现在用于 WebSocket 升级请求。
  • build.minify: 'terser' 所支持的最小 terser 版本从 5.4.0 提升至 5.16.0。
  • commonjsOptions.strictRequires 现在默认为 true。

对开发者的影响:这些改进和修复提升了 Vite 的稳定性和性能,开发者应查看更新日志,了解可能影响项目的更改。

为何说它是个 “过渡版本”?

不知道大家看完更新内容之后是什么感受。在我的【主观】看来,整个 vite 6 的更新并没有涉及到什么核心的变化。

Vite 6 的 实验性环境 API 和 扩展 HTML 元素支持 等功能,虽然提供了新的可能性,但尚未完全稳定。

例如:实验性环境 API 仍需要开发者小心测试,而 HTML 元素扩展的适用场景可能在实际应用中仍需验证。这些改进在为未来铺路,但当前版本的开发者可能更多是在 “试水”。

相比 Vite 4 和 Vite 5,Vite 6 没有带来革命性的改进。

比如: Vite 4 的模块热替换(HMR)性能提升和 Vite 5 的 SSR 支持完善。

因此,我说 vite 6 更像是一个过渡版本。

如果你的项目对性能和现代特性要求较高(如复杂的多环境支持、使用现代 Sass API),那么可以尝试升级 vite 6。但是,如果你没有这方面需求的话,那么 vite 6 对你的意义可能并不是很大!

责任编辑:武晓燕 来源: 程序员Sunday
相关推荐

2015-06-17 10:14:45

2012-01-12 09:46:12

程序员编程

2022-02-24 13:12:20

区块链比特币DeFi

2016-05-23 11:19:21

谷歌VR

2011-06-28 10:48:22

2019-04-22 08:10:00

Google 开源技术

2011-04-18 13:53:25

应用商店苹果App Store

2023-11-17 08:01:30

Vite 5前端

2011-03-21 14:24:13

Debian 6

2023-05-09 11:02:22

Go内联版本

2022-12-09 08:23:01

2010-07-30 09:56:21

Perl 6Rakudo Star

2012-04-11 09:44:42

谷歌Chrome OS

2017-12-14 16:55:33

2023-08-02 07:07:26

GPU核心ACM

2019-10-09 16:47:18

MacOS苹果系统

2023-08-24 13:23:58

LibreOffic开源

2024-07-09 10:20:05

VueJSX函数

2022-09-26 09:30:56

微软Windows 11

2024-07-18 07:07:07

点赞
收藏

51CTO技术栈公众号