完整的 Ant Design v4.24 到 v6 升级迁移工具包,包含自动化脚本和详细指南。
| 文件 | 类型 | 说明 |
|---|---|---|
| migration-checklist.md | 📋 文档 | 详细的迁移检查清单(主文档) |
| static-methods-migration.md | 🚨 文档 | 静态方法迁移专项指南(重要!) |
| scan-api-diff.js | 🔍 脚本 | API 差异扫描器 |
| import-replace.js | 🔧 脚本 | 批量替换工具 |
| replace-static-import.js | 🔧 脚本 | 静态方法 import 替换工具 |
| generate-global-utils.js | 📝 脚本 | 全局单例工具生成器 |
| component-template.js | 📝 脚本 | 组件模板生成器 |
| USAGE.md | 📖 文档 | 详细使用指南 |
| README.md | 📄 文档 | 本文件 |
你的项目大量使用了 message.*、notification.*、Modal.* 静态方法!
这是 v4 → v6 迁移中最重要的变更之一。在 v6 中,这些方法必须在特定上下文中使用,否则会失效。
我为你准备了全局单例迁移方案,只需 3 步:
# 1. 生成全局单例工具文件
node generate-global-utils.js ./src/utils
# 2. 批量替换 import 语句(预览)
node replace-static-import.js ./src --dry-run
# 3. 执行替换(备份)
node replace-static-import.js ./src --backup
NODE_NO_WARNINGS=1 npx tsc --noEmit -p tsconfig.app.json
✅ 优势:最小改动,业务代码几乎不需要修改 📖 详细说明:查看 static-methods-migration.md
node scan-api-diff.js /path/to/old-project/src
node component-template.js --theme ./src/theme
# 选择一个简单模块开始(推荐 general)
cp -r /path/to/old-project/src/components/general ./src/components/
# 批量替换简单的 API
node import-replace.js ./src/components/general --backup
逐个模块迁移并测试,确保每个模块正常工作。
扫描代码中使用的 v4 API,标记所有需要修改的地方。
# 扫描并生成报告
node scan-api-diff.js /path/to/old-project/src
# 导出 JSON 格式报告
node scan-api-diff.js /path/to/old-project/src --json=report.json
报告示例:
📊 Ant Design v4 → v6 API 差异扫描报告
===============================================================================
📁 扫描统计:
总文件数: 581
有问题的文件: 127
🚨 问题统计:
🔴 Critical: 5 个 (必须立即修改)
🟠 High: 43 个 (高优先级)
🟡 Medium: 89 个 (中优先级)
🟢 Low: 12 个 (低优先级)
自动替换简单的 API 变更(visible → open, moment → dayjs 等)。
# 预览修改(强烈推荐先预览)
node import-replace.js ./src --dry-run
# 执行替换并备份
node import-replace.js ./src --backup
自动处理的变更:
visible → openonVisibleChange → onOpenChangemoment → dayjsoverlay → menu (Dropdown)BackTop → FloatButton.BackTop生成符合 v6 最佳实践的组件模板。
# 生成基础组件
node component-template.js basic UserCard ./src/components
# 生成表单组件
node component-template.js form UserForm ./src/components
# 生成 ProTable 组件
node component-template.js proTable UserList ./src/components
# 生成完整主题系统(重要!)
node component-template.js --theme ./src/theme
可用模板:
basic - 基础组件form - 表单组件(含验证)modal - Modal 弹窗组件table - Table 列表组件proTable - ProTable 高级表格因为你的项目大量使用静态方法,建议优先处理:
# === Phase 0: 处理静态方法(最重要!)===
# 1. 生成全局单例工具
node generate-global-utils.js ./src/utils
# 2. 批量替换 import(预览)
node replace-static-import.js ./src --dry-run
# 3. 确认无误后执行替换
node replace-static-import.js ./src --backup
# 4. 在 src/index.tsx 中使用 AppProvider
# 参考 static-methods-migration.md
# === Phase 1: 评估和准备 ===
# 5. 扫描旧项目代码
node scan-api-diff.js /path/to/old-project/src --json=report.json
# 6. 生成主题系统
node component-template.js --theme ./src/theme
# === Phase 2: 逐步迁移 ===
# 7. 复制 general 组件
cp -r /path/to/old-project/src/components/general ./src/components/
# 8. 批量替换简单 API
node import-replace.js ./src/components/general --backup
# 9. 测试该模块功能
# 10. 重复步骤 7-9,迁移其他模块
# === Phase 3: 最终检查 ===
# 11. 扫描新项目,确认无遗漏
node scan-api-diff.js ./src
| 步骤 | 不处理静态方法 | 处理静态方法(推荐) |
|---|---|---|
| 工作量 | 大(每个文件都要改) | 小(批量替换) |
| 风险 | 高(容易遗漏) | 低(自动化) |
| 耗时 | 20-30 小时 | 5-7 小时 |
| 是否推荐 | ❌ | ✅ |
# 1. 评估工作量
node scan-api-diff.js /path/to/old-project/src --json=report.json
# 2. 设置主题系统
node component-template.js --theme ./src/theme
# 3. 逐个模块迁移
# a. 复制模块代码
cp -r /path/to/old-project/src/components/general ./src/components/
# b. 批量替换
node import-replace.js ./src/components/general --backup
# c. 测试该模块
# 4. 重复步骤 3,直到所有模块迁移完成
# 5. 最终检查
node scan-api-diff.js ./src
# 1. 复制所有代码
cp -r /path/to/old-project/src/* ./src/
# 2. 批量替换
node import-replace.js ./src --backup
# 3. 设置主题
node component-template.js --theme ./src/theme
# 4. 检查剩余问题
node scan-api-diff.js ./src
# 5. 手动修复剩余问题
migration-checklist.md - 📋 完整的分阶段迁移清单
USAGE.md - 📖 详细使用指南
你的项目大量使用以下组件,需要特别注意:
classNames APIvisible → open你的项目原本使用 CSS 方式管理主题(theme/antd.dark.css):
component-template.js --theme 生成新主题系统建议按以下顺序迁移:
components/general/*)⭐ 优先article, channel, corpus)A: 请务必:
--dry-run 预览--backup 备份A: 分优先级处理:
A:
migration-checklist.md 中的 API 对照表component-template.js 生成参考模板A:
# 1. 生成主题文件
node component-template.js --theme ./src/theme
# 2. 在 src/index.tsx 中引入
import AppProvider from './theme/AppProvider';
ReactDOM.render(
<AppProvider>
<App />
</AppProvider>,
document.getElementById('root')
);
基于你的项目结构分析:
总文件数: 581
├── 组件数: 500+
├── API 文件: 21
├── Redux reducers: 29
├── 页面: 8
└── 国际化: 3 种语言 (en-US, zh-Hans, zh-Hant)
预估工作量:
如果你发现工具的 bug 或有改进建议:
这些工具脚本为你的项目专用,可自由修改和使用。
现在你已经准备好了!
migration-checklist.md 了解整体流程scan-api-diff.js 评估工作量component-template.js --theme 设置主题祝你迁移顺利!🚀
migration-checklist.md 中记录进度最后更新: 2026-02-14