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 对你的意义可能并不是很大!