Skip to content

fix(ci): 修复模块抽取后 ootb npm install 崩溃 + 空 catalog 工具链#16

Closed
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/bc-1dc245bb-8491-4412-b4fa-a0f2ae95e13b-e5e7
Closed

fix(ci): 修复模块抽取后 ootb npm install 崩溃 + 空 catalog 工具链#16
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/bc-1dc245bb-8491-4412-b4fa-a0f2ae95e13b-e5e7

Conversation

@cursor

@cursor cursor Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

main@afb4167(模块抽到 Tanya7z/sfmc-modules)后 ootb 在 Install root deps 失败:Cannot read properties of undefined (reading 'extraneous')

根因

  1. BLOCKER / DRYpackage-lock.json 仍保留已删除 modules/packages/* 的 workspace link → npm arborist 崩溃。
  2. MAJOR / DIP+OCP:catalog 清空后 check-catalog/ootb/smoke 仍硬性要求非空,与「远程拉取业务包」模型不一致。
  3. BLOCKER / LSPfetch-module unzip 未归一化 Windows \ 路径,Linux 写出字面量 sapi\manifest.json,install 后 catalog 仍为空。

修复

  • 清理悬空 lock link,恢复 npm install
  • 新增 tools/rebuild-catalog.js(packages manifest → catalog 单一真相);fetch-module / sfmc module uninstall 联动
  • unzip 路径 \/
  • 工具链允许空 catalog;ootb smoke 前安装 afk fixture 覆盖启停
  • gitignore 已安装 packages + registry 缓存;清空过期 _manifests

验证

  • 本地:npm install ✅、check-ootb 6/6 ✅、空 catalog smoke ✅、afk fixture 启停翻转 ✅

SOLID 审查(本 push 范围)

级别 原则
BLOCKER DRY lockfile 与磁盘 packages 分叉 → 已修
BLOCKER LSP fetch install 未留下可用目录布局 → 已修
MAJOR DIP/OCP 工具假定 catalog 非空 → 已修
MINOR DRY _manifests 残留已抽模块 → 已清空

不重复 #13/#14 的 economy SQL / service 权限门改动。

Open in Web View Automation 

cursoragent and others added 3 commits July 22, 2026 06:11
模块抽到 Tanya7z/sfmc-modules 后 lockfile 仍保留 node_modules/@sfmc/module-*
link 指向已删除的 modules/packages/*,导致 npm arborist 读取 extraneous 崩溃,
ootb「Install root deps」直接失败。

Co-authored-by: Shiroha <Tanya7z@users.noreply.github.com>
业务模块抽离后 catalog 为空是合法平台壳状态,但 check-catalog/ootb/smoke
仍硬性要求非空,且 fetch-module unzip 未处理 Windows 反斜杠路径。

- 新增 tools/rebuild-catalog.js:从 packages/*/sapi/manifest 生成 catalog(DRY)
- fetch-module 安装后自动 rebuild;unzip 归一化 \\ → /
- check-catalog / ootb / smoke / sim 允许空 catalog,并校验 services
- ootb CI 在 smoke 前安装 afk fixture 覆盖启停翻转
- gitignore 忽略已安装 packages/* 与 registry 缓存
- 清理过期 _manifests(与空 packages 对齐)

Co-authored-by: Shiroha <Tanya7z@users.noreply.github.com>
index.json 权威形态为 { version, modules: { id → {repo,tag} } }。
sfmc/src/registry.ts 原先把整棵 JSON 当扁平 map,导致 CLI 把 version/
generatedAt 当成模块 id(DRY/LSP 与 fetch-module 分叉)。与 #15 同修。

Co-authored-by: Shiroha <Tanya7z@users.noreply.github.com>
@Tanya7z

Tanya7z commented Jul 22, 2026

Copy link
Copy Markdown
Member

Superseded by main tools rewrite (e6525bb) and PR #17 CI/registry fixes. Closing as duplicate/outdated.

@Tanya7z Tanya7z closed this Jul 22, 2026
@Tanya7z
Tanya7z deleted the cursor/bc-1dc245bb-8491-4412-b4fa-a0f2ae95e13b-e5e7 branch July 22, 2026 14:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants