代理迁移指南 - 共存增量迁移
AI 助手增量共存迁移指南,帮助将 HeroUI v2 迁移到 v3
概述
本指南专为人工智能助手(代理)设计,帮助用户使用增量共存迁移从 HeroUI v2 迁移到 v3。这种方法允许 v2 和 v3 组件并行工作,从而实现逐个组件迁移,同时保持项目正常运行。
主要区别:与完全迁移不同,增量共存迁移允许项目在迁移期间保持功能。 v2 和 v3 组件可以暂时共存。
关键原则
- 增量组件迁移:一次迁移一个组件,在继续之前测试每个组件
- 项目保持功能:与完全迁移不同,项目应始终保持工作状态
- 策略识别:确定项目使用哪种共存策略(A:pnpm 别名或 B:组件包)
- 逐个组件测试:在移动到下一个组件之前测试每个迁移的组件
- CSS 冲突管理:监控并解决共存期间 v2 和 v3 之间的样式冲突
- 已移除组件:没有 v3 对位的 v2 组件(Code、Image、Navbar、Ripple、Snippet、Spacer、User)可在共存期间保留。除非用户明确要求替换,否则不要迁移它们。
v3 的主要变化
增量迁移设置
有关详细设置和迁移说明,请参阅增量迁移指南。该指南涵盖:
- 策略选择(A:pnpm 别名或 B:组件包)
- 每个策略的详细设置
- 共存的 CSS 配置
- 逐个组件的迁移过程
- CSS 冲突处理
- 完成迁移
策略识别
对于使用增量共存策略的项目,代理应该:
-
确定策略:检查项目是否使用pnpm别名(策略A)或组件包(策略B)
- 策略 A:寻找别名,例如
"@heroui-v3/react": "npm:@lenso/ui@latest"在 package.json 中 - 策略 B:寻找特定于组件的包,例如
@heroui/button,@heroui/card旁边@lenso/ui
- 策略 A:寻找别名,例如
-
验证设置:确保共存设置正确:
- 策略A:两者兼而有之
@lenso/ui(v2)和@heroui-v3/react(v3 别名)已安装 - 策略B:
@lenso/ui(v3) 和组件包,例如@heroui/button(v2) 已安装 - CSS 已针对两个版本进行配置(请参阅 CSS 配置部分)
- 策略A:两者兼而有之
逐个组件的迁移指南
对于策略 A(pnpm 别名):
-
识别要迁移的组件
- 查看组件迁移参考表
- 使用
get_component_migration_guides用于获取特定于组件的指南的 MCP 工具
-
更新导入
- 将导入从
@lenso/ui改为@heroui-v3/react - 例子:
import {Button} from "@lenso/ui"→import {Button} from "@heroui-v3/react"
- 将导入从
-
更新组件代码
- 遵循组件迁移指南
get_component_migration_guides工具 - 更新 props、组件结构和 API 调用
- 如果需要,用复合组件替换挂钩
- 遵循组件迁移指南
-
测试迁移的组件
- 验证组件正确渲染
- 测试功能和交互
- 检查样式冲突
-
文档迁移
- 跟踪哪些组件已迁移
- 注意任何问题或疑虑
对于策略 B(组件包):
-
识别要迁移的组件
- 查看组件迁移参考表
- 使用
get_component_migration_guides用于获取特定于组件的指南的 MCP 工具
-
移除组件包
- 从依赖项中删除 v2 组件包(例如,
@heroui/button) - 更新package.json
- 从依赖项中删除 v2 组件包(例如,
-
更新导入
- 将组件包中的导入更改为
@lenso/ui(v3) - 例子:
import {Card} from "@heroui/card"→import {Card} from "@lenso/ui"
- 将组件包中的导入更改为
-
更新组件代码
- 遵循组件迁移指南
get_component_migration_guides工具 - 更新 props、组件结构和 API 调用
- 如果需要,用复合组件替换挂钩
- 遵循组件迁移指南
-
测试迁移的组件
- 验证组件正确渲染
- 测试功能和交互
- 检查样式冲突
-
文档迁移
- 跟踪哪些组件已迁移
- 注意任何问题或疑虑
处理移除的组件(无 v3 对应项)
当遇到没有 v3 对位的 v2 组件(Code、Image、Navbar、Ripple、Snippet、Spacer、User)时:
- 将它们留在原处 - 不要尝试迁移它们,除非用户明确请求删除
- 如果用户想要删除它们:使用
get_component_migration_guides(如果有)或组件迁移参考获取指南并帮助替换为原生 HTML 或手动实现
CSS 冲突处理
共存期间,v2 和 v3 CSS 系统都会被加载。代理应该:
-
监控冲突
- 注意样式不一致
- 检查v2和v3样式是否冲突
- 验证两个 CSS 导入均存在且顺序正确
-
指导冲突解决
- 确保 CSS 导入顺序:
tailwindcss首先,然后@lenso/tokens - 检查 Tailwind 配置是否配置了 v2 插件
- 验证 v3 CSS 是否正确导入
- 确保 CSS 导入顺序:
-
每次迁移后测试样式
- 验证迁移的组件看起来正确
- 检查是否有意外的样式覆盖
- 确保 v2 组件的样式仍然正确
组件迁移参考
使用get_component_migration_guidesMCP 工具可获取每个组件的详细指南。
v3 中的新组件
完成步骤
迁移所有组件后:
-
删除 v2 依赖项
- 策略A:删除
@lenso/ui,@heroui/theme和别名 - 策略B:删除所有剩余的
@heroui/*组件包 - 如果项目仍包含上述已移除 v2 组件(Code、Image、Navbar、Ripple、Snippet、Spacer、User),请告知用户:他们可稍后在代理协助下按指南移除或替换。
- 策略A:删除
-
更新所有导入
- 策略A:改变
@heroui-v3/react→@lenso/ui - 策略 B:所有导入应已指向
@lenso/ui(v3)
- 策略A:改变
-
更新CSS配置
- 从配置中删除 v2 Tailwind 插件
- 仅保留
@import "@lenso/tokens"; - 删除 v2 CSS 导入
-
完成样式迁移
- 遵循样式迁移指南
- 使用
get_styling_migration_guideMCP工具 - 更新实用程序类、颜色标记等。
与完全迁移的差异
主要区别:
- 项目状态:项目在迁移过程中保持功能(无损坏状态)
- 迁移速度:可以在较长时间内逐个组件进行迁移
- 测试:可以在完全迁移之前测试 v3 组件和 v2 组件
- 分支策略:功能分支不太重要(尽管仍然推荐)
- 依赖管理:两个版本暂时共存
- CSS 处理:两个 CSS 系统在共存期间加载
何时使用增量共存:
- 需要逐步迁移的大型代码库
- 迁移期间必须保持功能的项目
- 想要增量测试 v3 组件的团队
- 已使用特定于组件的包的项目(策略 B)
何时使用完全迁移:
- 可以快速迁移的较小项目
- 可以接受临时破坏状态的项目
- 喜欢一次性迁移的团队
- 项目使用统一
@lenso/ui包(策略 A 可以工作,但完全迁移可能更简单)
代理最佳实践
-
验证项目仍然正常运行
- 每个组件迁移后,确保项目仍然有效
- 测试已迁移和未迁移的组件
- 立即报告任何问题
-
指导逐个组件迁移
- 帮助一次迁移一个组件
- 使用
get_component_migration_guides适用于每个组件的 MCP 工具 - 在继续之前彻底测试
-
监控 CSS 冲突
- 注意 v2 和 v3 之间的样式问题
- 指导解决冲突
- 确保 CSS 配置正确
-
跟踪迁移进度
- 保留已迁移组件的清单
- 记录任何问题或疑虑
- 注意正在使用哪种策略
-
指导完成步骤
- 迁移所有组件后,指导删除 v2 依赖项
- 帮助将所有导入更新为仅限 v3
- 指导样式迁移完成
常见场景
大型项目(100 多个组件)
- 随着时间的推移逐步迁移组件
- 彻底测试每个组件
- 监控 CSS 冲突
- 可能需要数周或数月才能完成
小型项目(<20 个组件)
- 可以更快地迁移
- 仍然测试每个组件
- 减少 CSS 冲突风险
- 可能在几天内完成
混合战略项目
- 有些项目可能对某些组件使用策略 A,对其他组件使用策略 B
- 指导每个组件进行适当的导入更新
- 尽可能确保方法一致
项目使用 v2 导航栏(或其他已删除的组件)
- 留在原处 —— v2 Navbar 与其他已移除组件(Code、Image、Ripple、Snippet、Spacer、User)在共存期间仍会继续工作
- 告知用户:若不再需要,可在代理协助下移除;替换方案见 组件迁移参考。
下一步
完成迁移后:
- 删除 v2 依赖项(已在完成步骤中完成)
- 从迁移 MCP 切换到用于 v3 开发的
heroui-reactMCP - 更新文档中的引用
- 运行最终验证
- 完成样式迁移
本代理迁移指南旨在与迁移 MCP 服务器配合使用。在开始迁移之前,请确保 MCP 服务器已正确配置并且工具可用。