vite5升级到vite6更新哪些东西

110 阅读5分钟

Vite 6 的重要更新点总览

Vite 6 重点是以下方向:

  • 更快、更稳定的 HMR(基于新的 @vitejs/hmr 模块)
  • 更一致的 API(移除一些旧 API)
  • 统一构建模式(部分 CLI 变更)
  • 新的插件体系增强
  • 改进 Rollup、esbuild、Lightning CSS 等依赖版本

🔥 1. 重大破坏性变更(Breaking Changes)

① 配置文件:默认导出必须是对象或函数

之前:

export default defineConfig({...})

Vite 6 要求:

  • default export 必须返回纯对象或函数
  • 不能再导出数组
  • 不能多重 export

② 原开发 HMR API 变更

旧:

import.meta.hot.accept()

新(推荐):

import.meta.hot.on('event', handler)

并新增独立包:

@vitejs/hmr

③ SSR 构建方式更新

Vite 6 规范了 SSR 的 bundle 输出:

  • 去掉一些历史兼容字段
  • SSR external 逻辑更严格
  • 一些插件需要更新(如 React、Vue、Svelte 最新版已兼容)

④ Node 版本要求提升

  • Node ≥ 18.0(部分功能要求 ≥ 18.18)

如果你本地 Node 太老会直接报错。


⑤ 默认使用 LightningCSS(取代部分 PostCSS 功能)

  • 新增 Lightning CSS(更快)
  • 少部分 PostCSS 插件表现可能不同

⑥ 移除旧的 CLI 行为

例如:

Vite 5Vite 6
vite optimize❌ 删除
vite preview --https行为变更
vite build --watch改为 vite build --config-watch

2. 新增功能(New Features)

① 新 HMR 模块系统(更快、更稳定)

官方称 HMR 在大项目中更稳,不会出现 Vite 5 的奇怪卡顿或失效。


② 更快的 CSS 构建

使用 LightningCSS

  • CSS 解析快 10 倍
  • 自动处理兼容性
  • 更好的 tree-shake

③ 新的 Dev Server 与 Rollup 通信模式

插件可以更快响应文件变化。


④ 更规范的 Bundler 输出

构建输出现在与 Rollup 更一致。


🔧 3. 配置项变化(Changes)

以下是升级时需要检查的配置:

❗ 修改点 1:optimizeDeps 行为调整

Vite 6 内部对预构建优化逻辑变化较大:

  • 有的依赖不需要手动列入 include
  • 某些需要主动排除(如虚拟模块)

❗ 修改点 2:resolve.alias 更严格

路径符号必须合法,例如:

❌ 不再容忍结尾的 /
✔ 必须写标准路径


❗ 修改点 3:server.proxy 现在更严格检查对象结构

如果写成:

proxy: {
  '/api': 'http://localhost:8080'
}

可能报错,需要改成:

proxy: {
  '/api': { target: 'http://localhost:8080', changeOrigin: true }
}

📦 4. 插件兼容性(请升级插件)

多数主流插件已经适配:

  • @vitejs/plugin-vue ≥ 5.1
  • @vitejs/plugin-react ≥ 4.3
  • @vitejs/plugin-legacy ≥ 5.x
  • vite-plugin-compression、Imagemin 等也需升级

如果你有使用这些老插件,需要注意兼容性。


🧭 5. 你的项目升级指南(简明版)

按顺序检查:

① 升级 Node 到 ≥ 18.18

② 升级 Vite:

npm i -D vite@latest

③ 所有 Vite 插件跟随升级到最新版本

④ 检查你的 vite.config.ts

  • default export 是否正确
  • 有没有旧的 optimizeDeps 写法
  • proxy 是否是对象格式
  • alias 是否是合法路径

⑤ 如果有 HMR 手写逻辑 → 必须迁移

⑥ SSR 项目要检查构建输出


下面给你整理 最完整、最清晰的《Vite 5 → Vite 6 升级差异对比表》 ,按 功能、配置、插件、CLI、SSR、HMR、Node 要求 全面对比,方便你项目升级时逐项核对。


🚀 Vite 5 → Vite 6 升级差异完整对比表

1. 基础环境要求对比

项目Vite 5Vite 6
Node 版本≥ 14.18≥ 18.0(推荐 ≥ 18.18)
Rollup 版本3.x4.x(破坏性变更)
LightningCSS非默认使用默认启用,加速 CSS 构建

2. 核心功能变化

功能Vite 5Vite 6
HMR(热更新)基于旧内部系统重构为 @vitejs/hmr 模块,性能更稳定、更快
CSS 构建基于 PostCSS默认切换到 Lightning CSS(更快)
依赖预构建(optimizeDeps)esbuild-heavy依赖扫描和预构建逻辑优化,更智能
构建系统Rollup 3Rollup 4(包含大量 breaking changes)

3. 配置文件差异

配置项Vite 5 行为Vite 6 行为
配置导出可导出数组、多个 export(某些情况不严)必须是默认导出一个对象或函数
server.proxy字符串写法可用必须使用对象写法 { target: "" }
resolve.alias相对宽松更严格,不允许无效路径
optimizeDeps需要手动 include 的场景较多自动处理更多依赖,但排除项要更精确
css.postcss默认优先 PostCSS部分能力被 LightningCSS 覆盖
experimental 选项增加更多实验配置

4. 插件生态变化

插件类型Vite 5Vite 6(注意事项)
官方插件(vue/react)兼容必须升级到对应 major 版本
vite-plugin-legacy工作正常插件必须升级才能支持 Rollup 4
图片压缩类插件大多基于 Rollup 3不兼容 Rollup 4,需升级
Unocss / Tailwind 插件有兼容性更新建议升级到最新版本
基于 HMR 的插件使用旧 API必须迁移到新版 HMR API

5. HMR(热更新)差异

HMR APIVite 5Vite 6
import.meta.hot.accept()标准写法推荐但底层已不同
自定义事件简单使用全新事件模型: import.meta.hot.on("event", handler)
HMR 核心模块内建系统迁移到独立包 @vitejs/hmr

6. SSR、预渲染差异

项目Vite 5Vite 6
SSR 打包结构比较松散标准化 bundle 输出格式
ssr.external宽松更严格,自动 external 更智能
preload、prefetch行为不完全一致与 Rollup 4 行为对齐

7. CLI(命令行)差异

命令Vite 5Vite 6
vite optimize✔ 可用❌ 移除(已废弃)
vite preview --https能覆盖 dev https行为更严格
vite build --watch可用替换为 --config-watch
--force强制重建缓存行为优化但不变

8. 构建行为差异

构建项Vite 5Vite 6
chunk 拆分基于 Rollup 3基于 Rollup 4(默认策略有所变化)
CSS 抽取PostCSS 插件链LightningCSS 优先,带来不同输出
Sourcemap结构松散更标准化
assetsInlineLimit默认 4kb保持不变

9. 错误提示 & 日志改进

项目Vite 5Vite 6
错误信息较为通用更友好,包含“修复建议”
插件错误定位不精确提供更明确的 plugin hook 报错位置

🧱 总结:升级时最容易踩坑的点(Top 8)

序号升级风险建议
1Node 版本太低升到 ≥ 18
2插件不兼容 Rollup 4全部升级
3server.proxy 字符串写法导致报错换成 { target: "" }
4CSS 因 LightningCSS 输出变化检查 PostCSS 插件
5原 HMR API 不生效改用新 API
6SSR external 行为变化需要手动排除模块
7config 默认导出数组失效改成对象/函数
8optimizeDeps 自动处理变化导致构建失败手动 include/exclude 调整