Agent Skills
返回列表
💻

TS深模块

开发编程 更新于 2026.08.28

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/setup-ts-deep-modules 技能到当前 AI 助手中。

技能介绍

解决包边界失控的问题

在大型 TypeScript 单体仓库中,随着业务迭代,包与包之间的依赖关系往往变得模糊。开发者经常直接 import 其他包内部子目录的实现文件,而不是通过公共 API。这种“浅模块”架构导致重构成本极高,内部逻辑的任何微小变动都可能引发级联的编译错误或运行时故障。深模块(Deep Modules)架构倡导将大量行为藏在实现子目录中,仅通过包根目录的入口点文件对外暴露接口,从而降低认知负荷并隔离变更。

核心能力与工作流

本技能作为架构边界助手,通过引入 dependency-cruiser 将“深模块”理念固化为可执行的代码检查规则,并自动完成闭环验证。

  • 定义四条强制边界规则:在 .dependency-cruiser.cjs 中生成均为 error 级别的规则:①包外代码只能 import 包根目录的入口点,严禁访问子目录;②包内部文件可自由互相 import;③测试文件(tests/)可访问入口点和自身 fixture,但同样严禁触碰包内部子目录;④全局禁止循环依赖。
  • 拒绝 Barrel 文件反模式:明确反对使用单一的 index.ts 重导出整棵子树,而是允许每个根文件作为独立的小入口点暴露,保持接口的清晰与聚焦。
  • 自动化接入与验证:自动检测包管理器与包根目录,将 lint:boundaries 脚本并入现有的 typecheck 流程中,且不修改 tsconfig 或添加路径别名。随后构建 /example/ 示例包,通过“添加深层 import 导致检查失败,还原后恢复通过”的步骤,切实证明规则具备拦截能力。

适用边界与注意事项

该技能专注于配置边界检查,而非重构业务代码实现。它不会复制或硬编码 dependency-cruiser 的具体配置脚本,而是描述规则逻辑交由环境生成。此外,关于分层架构(即谁依赖谁)的高层设计,仍需开发者在仓库中自行补充注释桩。下游的 TDD、代码审查等流程可基于生成的 BoundaryConfig 工件,确保新建代码持续遵守入口点约束。

使用场景

  • 给单体仓库添加边界:需给 TS 单体仓库子包强制实施深模块架构,禁止外部直接 import 内部子目录时。
  • 重构 TS 项目前配置 lint 脚本:需用 dependency-cruiser 配置 lint:boundaries 并接入 CI 验证包接口边界时。
  • 验证边界规则有效性:故意在测试中添加深层 import,需确保自动化检查能正确拦截违规行为时。
  • 规范测试依赖路径:编写单测时强制 tests/ 仅通过包根入口点导入,杜绝直接引用 lib/impl 内部文件。

适合人员

  • TS 单体仓库维护者:希望控制包间耦合度,重构时避免内部实现变动引发级联编译错误。
  • 架构边界工具链开发者:寻找自动化接入 dependency-cruiser 的流程,为代码审查提供边界约束规则。
  • 底层公共库作者:想把复杂实现藏在子目录,仅通过入口点向其他项目暴露干净的 API。