展开本页目录
开始前准备什么
- 下载本题完整练习包,区分待实现 starter 与作者完成 reference。
- 按README准备本题原生依赖;所有输入均为原创或明确标注的本地fixture。
- 本地练习不需要付费模型Key;真实模型调用未执行,MiniLM题另有明确实际推理说明。
- 准备六个模块
- 配置循环规则
- 读取真实依赖
- 查看循环链条
- 隔离共享依赖
- 重新分析图
- 接入退出合同
原创输入、待完成starter、作者reference及实际运行产物,依README本地准备依赖。
环境要求、具体操作、产物核对与未运行范围。
1. 准备六个模块
下载六份原创TypeScript模块,a导入b、b导入c、c再导入a,另有独立类型与UI模块。这个循环确实存在于源码,不是手工画的架构示意。
2. 配置循环规则
使用dependency-cruiser解析实际import,配置no-circular规则,并安装兼容的TypeScript转译器。仅安装分析器而缺转译器可能得到空模块图。
本地启动与复现
cd reference
npm install
node verify.mjs3. 读取真实依赖
输出JSON后先核对totalCruised与依赖数量,不能把空报告当作没有循环。每条边都来自解析器的resolved路径。
4. 查看循环链条
查看实际报告中的a→b→c→a环与规则错误。JSON输出模式的进程退出码可能为0,应读summary.advisedExitCode并由CI包装器转为失败。
5. 隔离共享依赖
将c改为不依赖a的共享叶子函数,保留a和b调用链。这个修复针对输入里的循环,不宣称删除任何import都能保持项目行为。
6. 重新分析图
再次运行原生分析器,循环违规由1变为0;比较修改前后边集合,确认被移除的是回到a的边,而非漏扫整个src目录。
7. 接入退出合同
下载前后报告与源码,接入构建时使用建议退出码。让Claude Code扩展路径别名时,应新增真实别名输入再核对解析结果;本题未执行账号会话。
怎样确认已经完成
- 报告实际扫描六个模块,不能用空扫描判无环。
- 坏版准确发现a→b→c→a,修复后循环违规由1到0。
- 保留前后边集合与advisedExitCode,CI按失败合同处理。
常见问题
AI改一个文件会影响哪些模块,能先画出来吗?
可以先由dependency-cruiser解析真实import,再查看输入模块的入边和出边。本题六个TS文件都有原生解析结果。
循环import到底在哪里,怎么改完后确认真的断开了?
查看规则报告给出的a→b→c→a循环,修复后重跑比较违规数和边集合,不能只手动画一张无循环图。
哪些部分实际运行,哪些需要独立验证?
dependency-cruiser真实解析六个TS模块,循环违规由1降为0;JSON输出的advisedExitCode用作CI失败合同。 目标AI助手账号生成、云平台部署和生产环境不在本次执行范围。




