Vite 7 + React 19 升级清单
非常好 👍
既然你现在的项目是基于 Vite + React + Ant Design + ECharts + PDF/Excel 导出 的性能平台,那么下面这份是专门为你定制的 《Vite 7 + React 19 升级清单》。
它分为四部分:
1️⃣ 升级前准备
2️⃣ Vite 7 升级要点
3️⃣ React 19 升级要点
4️⃣ 升级后可立即获益的改进
🧩 一、升级前准备
| 项目 | 动作 | 说明 |
|---|---|---|
| Node.js 版本 | 升级至 ≥ 20.19 | Vite 7 是 ESM-only 分发,Node 18 已不完全兼容。 |
| 包管理工具 | 建议用 pnpm ≥ 9 或 npm ≥ 10 | 处理 lockfile 时更稳定。 |
| 依赖更新 | 更新 React、React-DOM、TypeScript、Antd、ECharts | React 19 的类型定义和旧依赖可能不兼容。 |
| 构建缓存清理 | 删除 node_modules 与 .vite 缓存 | 旧缓存容易引起构建异常。 |
| Vite 插件检查 | 检查第三方插件是否兼容 Vite 7 | 例如 vite-plugin-svgr、vite-plugin-compression。 |
| ESLint / TSConfig 更新 | 检查 parser 版本兼容 | 确保 TypeScript 版本 ≥ 5.5。 |
⚡ 二、Vite 7 升级要点
| 类别 | 新变化 / 动作 | 对你项目的影响 |
|---|---|---|
| 运行环境 | 要求 Node 20+,ESM-only | 项目入口若用 require,需改为 import。 |
| 构建目标 | 默认目标改为 "baseline-widely-available" | 打包体积略减,旧浏览器(IE、旧Safari)不再兼容。 |
| 插件 API | 新增 buildApp hook、改进环境变量加载 | 可在插件里更灵活地控制构建逻辑。 |
| Rust 打包器 Rolldown(实验) | 提供 --experimentalBundler=rolldown | 大型项目构建提速 30~50%。 |
| 废弃功能 | 移除 splitVendorChunkPlugin、旧 Sass API | 若用这些需迁移。 |
| 构建性能 | 冷启动更快,HMR 延迟更低 | Dev Server 体验显著提升。 |
建议迁移步骤:
-
在分支新建
feat/vite7-upgrade。 -
全局替换
require→import,确认配置文件改成 ESM (vite.config.js→vite.config.mjs)。 -
运行
vite build看是否报错。 -
若构建正常,再试
vite --experimentalBundler=rolldown测试性能差异。
⚛️ 三、React 19 升级要点
| 类别 | 新特性 / 变化 | 影响与迁移建议 |
|---|---|---|
| 核心 Hooks | 新增 use(), useActionState(), useOptimistic(), useFormStatus() | 可替代大量 useEffect + 状态管理样板。 |
| Server Components & Actions | SSR / RSC 支持正式化 | 如果你未来计划接入 SSR(Next.js 或自研),可以无缝衔接。 |
| 表单处理 | 引入 Action 概念,自动管理 pending / error 状态 | 你的性能筛选、查询页表单逻辑可直接简化。 |
| Ref 改进 | 函数组件可直接接受 ref | 减少 forwardRef 使用。 |
| 资源加载优化 | 新增 <link rel="preload">、<meta> 动态渲染支持 | 可提前加载 ECharts 资源、字体等。 |
| Hydration 改进 | 错误提示更直观、边界恢复能力增强 | 对你平台的 SSR 页更稳定。 |
| 类型系统 | React 类型定义全面升级 | TypeScript 校验更精确,需要升级 @types/react。 |
迁移建议:
-
升级依赖:
pnpm add react@19 react-dom@19 pnpm add @types/react@19 @types/react-dom@19 -D -
检查第三方库(Antd, ECharts, React Router)是否已支持 React 19。
-
Ant Design 5.21+ ✅
-
React Router 7+ ✅
-
ECharts React wrapper ✅(需最新版)。
-
-
将旧的异步数据加载逻辑尝试替换为
use()或useActionState()。 -
表单、按钮提交状态可用
useFormStatus()实现 loading 动画。
🚀 四、升级后可立即获益的改进
| 场景 | 变化 | 收益 |
|---|---|---|
| 性能查询页加载 | 结合 React 19 的资源预加载 + Vite 7 打包优化 | 页面首次加载速度提升约 20% 以上。 |
| 报表导出(Excel / PDF) | 利用 useActionState 管理导出状态 | 用户体验更流畅,不再卡顿。 |
| ECharts 图表页 | 利用新浏览器目标特性(ES modules 优化) | 包体更小,HMR 更快。 |
| SSR / 预渲染 | React 19 Hydration 修复机制 | 报错更少,恢复更平滑。 |
| 开发调试体验 | Vite 7 + Node 20 的稳定 HMR 管道 | 切换分支、切换接口配置几乎无延迟。 |
🧠 升级验证建议
-
本地对比构建时间
vite build --mode production记录 Vite 6 与 Vite 7 构建时间差。
-
验证功能
-
启动
npm run dev,打开性能查询页、图表页、导出页; -
检查控制台是否出现 hydration / 警告;
-
检查导出、分页、ECharts 交互是否正常。
-
-
回滚预案
-
若发现构建异常,可保留旧分支使用 Vite 6 + React 18;
-
等待依赖更新后再二次升级。
-
