VSCode无原生侧边栏依赖树,插件如Dependency Cruiser仅单向分析import路径且不支持动态导入;查“谁引用了我”应使用Shift+Alt+F12调用Find All References,它基于语言服务器实时索引所有静态声明。

VSCode 本身不提供“侧边栏依赖关系树”功能,所谓“一键显示依赖树”都是插件模拟的静态快照,不是实时双向图谱;真要查谁引用了当前文件,得用内置的 Find All References(Shift+Alt+F12)。
Dependency Cruiser 插件右键 View Dependencies 只做单向分析
它只输出“当前文件 import 了哪些模块”,路径是 src → node_modules 或 src → src,但不会反向追溯“哪些文件 import 了我”。这跟语言服务器无关,是插件设计限制。
- 对
import()动态导入、require('' + name)、eval加载的模块完全不可见 - 不读取项目根目录下的
.dependency-cruiser.js配置,所有exclude和doNotFollow规则失效 - 第三方包全塞进图里,
src/内部核心模块反而被淹没,图一展开就卡顿 - 节点点击能跳转,但没缩放、拖拽、悬停显示完整路径等基础交互
想看“谁引用了我”,必须用 VSCode 原生功能
右键当前文件或符号 → Find All References(快捷键 Shift+Alt+F12),这是唯一可靠、实时、支持跳转的方案。它基于语言服务器的符号索引,覆盖 import、require、export、export default 等所有静态声明形式。
- Vue/Svelte 组件名、React 函数组件名、TypeScript 接口/类型别名,只要被正确导出,都能被识别
- 对未启用
composite: true的 TS 子项目,可能漏掉跨目录引用,需检查tsconfig.json中references字段 - 若结果为空,先确认状态栏右下角语言模式是否为
JavaScript或TypeScript,不是Plain Text
真正可用的依赖图,得靠命令行工具生成 HTML
如果非要看图,madge 比 Dependency Cruiser 插件更靠谱:它默认不扫 node_modules,避免噪音;循环依赖自动高亮;生成的 HTML 支持缩放、拖拽、悬停看路径。
- 运行:
npx madge --html deps.html --layout dot src/ - ESM 项目务必加
--extensions js,ts,jsx,tsx,否则import全被忽略 - 打开
deps.html后,点击节点可跳转到源码位置(需本地服务或 VSCode Live Server 扩展) - 图太大时浏览器卡顿?加
--max-depth 2限制层级,或改用--circular只查循环
依赖图不是“开了插件就自动更新”的活地图,它是快照,是辅助判断的线索。最常被忽略的是:你看到的图,既不反映动态加载行为,也不包含构建时条件编译逻辑(比如 Webpack 的 DefinePlugin 注入的变量),更不会告诉你某个 import 在运行时是否真的被执行。别让图替你思考。


















