{title="📊 页面导航】
适用角色与上手难度
🎯 学习产出: 掌握 dependency-cruiser 深层模块强制配置,能把包结构约束为入口点即公共表面
🚀 AI 能力提升: 架构约束、代码导航
setup-ts-deep-modules
预计阅读时间: 3 分钟TS 深层模块(beta)。给 TypeScript 仓库接上 dependency-cruiser,让每个包都是深层模块:包的公共表面是它的入口点(包根部的文件),子文件夹里全是实现(对外隐藏、只能通过入口点进入),然后证明规则真的会咬人。
概述
词汇来自 codebase-design(深层模块、接口、接缝、深度)——调用 Skill 工具 "codebase-design" 并全程用它的话。
日常使用
强制出的形状
入口点不是 barrel:公共表面是每个根文件,所以包可以暴露几个小入口点(index.ts、client.ts、server.ts)而不是全塞进一个巨型 index.ts。鼓励小入口点,实现藏进子文件夹。规则本身是通用的:任何子文件夹里的任何东西都是私有的——你永远不用为加文件夹扩展配置。
四条规则(全部 error)
- 入口点边界:包外代码(app 代码或其它包)只能 import 该包的入口点(根文件),绝不 import 子文件夹里的东西
- 包内自由:包自己的文件互相随便 import
- 测试走入口点:
<pkg>/tests/下的文件可以 import 任何包的入口点和自己的tests/fixtures,但绝不 import 任何包的子文件夹内部(自己的也不行)。跨包集成测试可以,深 import 不行 - 无循环:依赖不能成环
分层(哪个包能依赖哪个)是不同的问题——配置里留了注释 stub 让仓库自己填。
与其它技能的关系
- 词汇:
codebase-design的深层模块语言 - beta 状态:排除在插件和顶层 README 之外,可随时变化

