dependency-cruiser是目前唯一能准确解析typescript类型导入(import type)、支持.vue和.tsx中、并严格按配置识别模块路径的cli依赖分析工具。

dependency-cruiser 是唯一能真实解析 TS import 的 CLI 工具
VSCode 本身不分析依赖,dependency-cruiser 是目前唯一能准确读取 import/export 语句、识别 TypeScript 类型导入(如 import type)、并支持 .vue 和 .tsx 中 <script setup></script> 的工具。它不是插件,必须通过终端运行;靠 VSCode 插件(比如 Project Dependencies Viewer)点一下“Show Dependencies”,只会扫当前文件、忽略类型导入、不读配置、把 node_modules 全塞进去——图里根本找不到你写的业务模块。
必须配好 .dependency-cruiser.js 才能跑通 TS 项目
直接 npx depcruise src/ 会漏掉几乎所有 TS 文件,因为默认只认 .js。第一步永远是初始化配置:
npx dependency-cruiser --init
生成的 .dependency-cruiser.js 里要立刻改三处:
完整的Galileo AI平台 TypeScript/JS SDK 参考,用于评估、观察和保护 GenAI 应用。适用于构建 Node.js 或 TypeScript 项目。
-
doNotFollow: ['node_modules']—— 不然遇到lodash里的循环引用直接卡死或报error: cycle detected -
exclude: ['^@myorg/utils', 'node_modules/']—— 排除内部私有包和第三方依赖,否则图里 90% 是node_modules节点 -
moduleSystems: ['esm']和extensions: ['js', 'ts', 'jsx', 'tsx', 'vue']—— 否则src/api/index.ts里import { useStore } from '@/store'这类路径全被当作文本忽略
Graphviz 的 dot 命令是渲染硬门槛
没装 dot,npx depcruise --output-type dot 的输出就只是纯文本,无法转成图。常见失败现象:
-
command not found: dot→ macOS 执行brew install graphviz;Windows 去 graphviz.org 下安装包,安装时勾选「Add Graphviz to the system PATH」 -
syntax error in line 123→ 几乎肯定是depcruise的警告日志混进了管道,加--silent:npx depcruise --silent --output-type dot src/ | dot -Tsvg > deps.svg - SVG 打开空白 → 浏览器渲染超限,改用 PNG:
dot -Tpng -o deps.png,或加--max-depth 2控制层级爆炸
Volar 必须启用且配置正确,否则图中路径全是死链
没开 volar.takeOverMode 或 files.associations 错配成 "*.vue": "html",@/ 别名就不会被解析成 src/,图里所有 Vue 文件的 import 都显示为相对路径碎片,点击跳转全部失效。
检查点:
- VSCode 设置里搜
volar.takeOverMode,设为true -
settings.json中确认有"files.associations": {"*.vue": "vue"} - 禁用 Vetur —— 两者共存时,Volar 的路径解析和类型提示会被截断,这是已知冲突
真正麻烦的不是命令跑不起来,而是图生成了却找不到自己写的两个核心模块——因为 node_modules 没过滤干净,或者 @/ 别名根本没被识别。每次导出前,先在终端跑 npx depcruise --validate 看配置是否生效,比反复打开 SVG 盲猜快得多。










