Skip to content

🔗 包依赖关系

本文档列出的 import 关系全部来自源码 grep 实测(非推测),反映 pkg/cmd/ 各包之间真实的内部依赖。

依赖关系图

pkg/domain 标黄突出 —— 它是中立枢纽,被多个 SDK 包依赖,自身却不依赖任何项目内包。

实测 import 清单

🖥️ 应用层 → SDK / 基础层

内部依赖
cmd/composer-skillspkg/clientpkg/composerpkg/domain

🔌 SDK 层 → 基础层

内部依赖
pkg/composerpkg/detectorpkg/installer
pkg/clientpkg/domain
pkg/repositorypkg/domain

🧱 基础层 → 基础层

内部依赖
pkg/installerpkg/composerutilspkg/composerutils/mockpkg/detector
pkg/detector无(仅标准库)
pkg/composerutils无(仅标准库)
pkg/domain无(仅标准库)

关键观察 🔍

  • pkg/domain 是中立枢纽 🎯 — pkg/clientpkg/repository 都依赖它定义返回类型,但 pkg/domain 自身不依赖任何项目内包。
  • pkg/composer 不依赖 pkg/domain ⚠️ — CLI 封装返回的结构化类型(AuditInfoOutdatedInfo 等)定义在 pkg/composer 内部,与 pkg/domain 的 API 模型是两套独立类型。
  • pkg/installer 是基础层中依赖最多的包 📦 — 它需要检测(detector)、下载与文件操作(composerutils)、以及测试用的 mock。
  • 应用层只依赖三个包 ✅ — cmd/composer-skills 透过 pkg/composerpkg/client 即可获得全部能力,不直接触碰基础层。

验证方法

本表的依赖关系可用以下命令复现:

bash
grep -rh 'github.com/scagogogo/composer-skills/pkg/' pkg/ cmd/ --include='*.go' | grep -v _test.go | sort -u

无循环依赖

依赖严格自上而下(应用层 → SDK 层 → 基础层),基础层永不反向 import 上层,整个项目无循环导入 —— Go 编译器会拒绝任何真实循环。

基于 MIT 许可证发布