Vite 6 的主要更新内容(Vite 6 相对于 Vite 5)
根据 Vite 官方发布和迁移指南,这里是更加“细致”的 Vite 6 变化:
-
Node.js 支持
-
实验性环境 API(Environment API)
-
resolve.conditions默认值变更 -
JSON 处理能力增强
-
HTML 里对资源引用(asset references)的支持扩展
-
postcss-load-config 升级
-
Sass 默认使用 “现代 API”
- 在 Vite 5 中,默认是 Legacy API(旧 API)。Vite 6 改成默认使用 Modern API(较新的 Sass JS API)。(Medium)
- 如果你还想使用 legacy API,可以通过配置
css.preprocessorOptions.sass.api: 'legacy'或css.preprocessorOptions.scss.api: 'legacy'。(vitejs) - 注意:legacy API 支持预计会在 Vite 7 中移除。(vitejs)
- 有部分用户/库在用现代 API 时遇到兼容性问题(例如有 GitHub issue 报导 Sass-JSON 导入器的问题)(GitHub)
-
库(library)模式下 CSS 输出文件名可自定义
-
其他高级 /破坏性(breaking)改动(影响较少用户)
- 在 SSR-dev 模式中,默认导入 CSS(
import 'foo.css') 支持被移除。(vitejs) build.cssMinify的默认值在 SSR 模式下也变更(改为esbuild)。(vitejs)server.proxy[path].bypass现在也支持 WebSocket 升级(bypass方法在 websocket 请求时也可能被调用,res参数可能为undefined)。(vitejs)- Terser 依赖升级:最小支持版本变为 5.16.0。(vitejs)
@rollup/plugin-commonjs升级到 v28,commonjsOptions.strictRequires的默认值改了(以前是'auto',现在默认是true)。(vitejs)- 删除了一些已弃用 / 无用的配置项和 API,比如
fs.cachedChecks、某些旧环境 API 类型、Hot Broadcaster 相关类型等。(vitejs) optimizeDeps.entries现在始终视为 glob 模式(不再接受文字路径),意味着你在配置这个选项时可能需要调整。(vitejs)
- 在 SSR-dev 模式中,默认导入 CSS(
-
破坏性(Breaking)更改页面
- Vite 官方新增一个 “破坏性更改(Breaking Changes)” 页面,用来列出所有重大 /已移除 /弃用的 API。(vitejs)
- 建议在升级时对照这个页面确认是否有你项目中使用并受影响的 API。
升级 /迁移建议(给你这种有 React/Vue + TS 项目经验的人)
- 升级前先看 Vite 6 的迁移指南(Migration Guide) ,特别注意
resolve.conditions、Sass 配置、JSON 配置、library 模式 CSS 名称。(vitejs) - 如果你的项目是库(library),并且依赖 CSS 输出名字(
style.css),需要检查build.lib.cssFileName是否已设置正确。 - 如果你用 Sass / SCSS,检查你是否有使用 legacy API。如果是的话,要考虑迁移到现代 API,或者继续兼容 legacy,但要注意未来(Vite 7)兼容性。
- 检查 PostCSS 配置:如果你是用 TS 写 PostCSS config 或 YAML config,要适配新的 postcss-load-config 要求。
- 如果你用 SSR(服务端渲染)或自定义环境(比如边缘环境 / serverless),可以考虑利用新的 Environment API,但注意它还是实验性的。
- 执行完整的打包 /构建 /开发测试(特别是 “build” 模式、SSR 模式)来看是否有问题。