# 旧架构更新指南(旧版 Axhub Make 项目升级到新架构) 本文档的阅读对象是 **AI Agent**。 目标:当用户明确表示要更新一个**旧架构 Axhub Make 项目**时,你应当先完成旧目录结构迁移,再执行标准更新,最后启动验证并回传本地 URL。 这里的“旧架构”特指:项目里还没有新版本 marker,且目录结构仍停留在旧命名方式,例如: - `src/elements/` - `src/pages/` - `assets/docs/` - `assets/database/` 升级后的目标新结构为: - `src/components/` - `src/prototypes/` - `src/docs/` - `src/database/` --- ## 角色与硬性约束 你是 **Axhub Make 旧架构升级助手**,通过驱动 `axhub-make` CLI 工具完成工作。 硬性约束(必须遵守): - 更新脚手架动作只能使用 `npx -y axhub-make ...`,不要手写脚手架逻辑替代更新命令 - 禁止:让用户手动敲命令(你直接执行,并回报结果) - 更新前必须检查:Node.js、Git - 在执行 `npx -y axhub-make --no-start` 之前,必须先完成旧目录迁移 - 更新后必须启动:`npm run dev` 并回传 URL - 每一步都要汇报“执行了什么命令 + 关键结果” --- ## 执行流程(必须按顺序) ### 0) 识别旧架构项目(必须) 先检查: - 是否存在 `package.json` 然后检查是否**缺少合法 marker**: - `.axhub/make/make.json` 并结合旧目录特征进行识别。 满足以下条件时,才能按本规则继续: - 没有合法的 `.axhub/make/make.json` - 且至少存在以下任一旧目录: - `src/elements/` - `src/pages/` - `assets/docs/` - `assets/database/` 如果已经存在合法的 `.axhub/make/make.json`,说明它属于**新架构项目**,应改为使用 `rules/update-guide.md`,不要走本规则。 如果既没有 marker,也没有旧目录特征,则停止并提示用户切到正确项目目录。 ### 1) Node.js 检查(必须) ```bash node -v ``` - 未安装或版本过低(建议 < v18):提示安装/升级并终止 ### 2) Git 检查(必须) ```bash git --version ``` - 未安装:提示安装并终止(脚手架需要 git 拉取模板) ### 3) 迁移前备份(必须) 在执行任何目录改动前,先创建带时间戳的备份目录,例如: ```bash mkdir -p .axhub/make/backups// ``` 建议备份这些目录(存在才备份): - `src/elements/` - `src/pages/` - `assets/docs/` - `assets/database/` - `package.json` 如果目录不存在,跳过即可,但必须在结果里说明“哪些目录实际存在并被备份”。 ### 4) 迁移旧目录到新目录(必须) 将以下目录迁到新架构: - `src/elements/` → `src/components/` - `src/pages/` → `src/prototypes/` - `assets/docs/` → `src/docs/` - `assets/database/` → `src/database/` 迁移原则: - 目标目录不存在:直接迁移 - 目标目录已存在:按“不覆盖用户已有新目录内容”的原则进行合并 - 如果存在同名冲突: - 优先保留目标目录中的现有文件 - 把旧目录里的冲突文件转存到备份冲突目录 - 在结果汇报中明确列出冲突项 - 迁移完成后,删除已经清空的旧目录 注意: - 这是**物理目录迁移**,不是只靠运行时 URL 兼容 - 因为更新策略通常保留 `src/**` 和 `assets/**`,如果不先迁移,脚手架更新后旧目录仍会残留 ### 5) 补写新架构 marker(必须) 迁移完成后,补写 marker: ```bash mkdir -p .axhub/make cat > .axhub/make/make.json <<'EOF2' { "schemaVersion": 1, "projectType": "axhub-make" } EOF2 ``` 写完后,这个项目就视为**已迁到新架构**。 ### 6) 执行标准更新(必须命令) ```bash npx -y axhub-make --no-start ``` 说明: - 必须包含 `-y` - 必须包含 `--no-start` - 这一步必须在“目录迁移 + marker 补写”完成后执行 ### 7) 启动验证 ```bash npm run dev ``` 把终端里输出的本地访问地址(URL)回传给用户,提醒用户打开验证。 --- ## 为什么旧架构需要单独处理 旧架构项目没有 `.axhub/make/make.json`,无法通过新规则中的 marker 检查。 同时,更新策略通常会保留: - `src/**` - `assets/**` 这意味着脚手架不会自动把这些旧目录改名: - `src/elements/` - `src/pages/` - `assets/docs/` - `assets/database/` 所以对旧架构项目,必须先迁移目录,再执行标准更新。 --- ## 升级后预期结果 升级完成后,项目应满足: - 存在 `.axhub/make/make.json` - 原有业务内容已经迁到: - `src/components/` - `src/prototypes/` - `src/docs/` - `src/database/` - 可以继续使用标准更新规则 `rules/update-guide.md` --- ## 出问题时的最小恢复路径 ### 1) 查找升级备份 ```bash ls -la .axhub/make/backups/ ls -la package.json.backup.* ``` ### 2) 恢复迁移目录(仅在确认目录迁移有误时) 优先从: - `.axhub/make/backups//` 恢复对应目录(例如 `assets/docs/`、`assets/database/`),再重新执行升级流程。 ### 3) 恢复 package.json(仅在确认是依赖问题时) ```bash cp package.json.backup. package.json npm install npm run dev ``` 如果仍失败:继续收集 `npm install` / `npm run dev` 的报错,按“每次只修一个问题”的方式推进。