Depcheck 是纯 CLI 工具,不支持 VSCode 内置运行或一键高亮;仅分析静态 import/require 与 package.json 差异,对动态引入、别名、插件注入等无效;需配合参数(如 --parsers、--tsconfig)、手动验证及替代工具(如 unimported)提升准确性。

Depcheck 命令行本身不支持 VSCode 内置运行
Depcheck 是一个纯 CLI 工具,没有官方 VSCode 插件,也**不兼容**直接在 VSCode 终端里“一键扫描并高亮”未使用依赖。你看到的某些教程截图里带图形界面的依赖分析,大概率是误把 npm ls、depcheck --json 配合手动解析,或混用了其他工具(如 npm-check、unimported)。
真正能落地的做法,是把它当作诊断命令,在终端里跑出结果后,再结合项目结构人工判断。别指望它自动删包或标记 import 行。
-
depcheck只分析require()、import语句和package.json的 mismatch,对动态 require(如require(someVar))、webpack alias、babel plugin 注入的模块完全无感 - 它默认不检查
devDependencies中被脚本调用的包(比如eslint在package.json#scripts里用了,但源码没 import,depcheck 会误报为 unused) - 输出里的
missing字段不是错误,只是说“代码里写了 require,但 package.json 没装”,和“无用依赖”无关
怎么让 depcheck 输出更准、少误报
关键在启动参数和项目上下文。默认执行 npx depcheck 几乎必然漏判或误报,尤其在 TypeScript、Vue、Next.js 这类项目里。
- 加
--parsers "{".ts":"@depcheck/parser-typescript"}"支持 TS import 分析(需先npm install -D @depcheck/parser-typescript) - 用
--ignore bin,scripts,devDependencies排除干扰项;如果确定devDependencies全部有用,就显式加上--no-dev - TypeScript 项目必须配
--tsconfig tsconfig.json,否则无法识别路径映射(baseUrl/paths)导致大量 false positive - 输出 JSON 更方便过滤:
npx depcheck --json | jq '.dependencies'(需要装jq),比看文字列表快得多
VSCode 里怎么快速定位 depcheck 报出的“疑似无用包”
depcheck 不提供跳转能力,但你可以用 VSCode 自身功能反向验证:它说 lodash 没用,你就得确认是不是真没用。
- 全局搜索
import.*lodash或require.*lodash(正则模式开启),注意搜node_modules外的文件 - 打开
package.json,点中lodash名称,按Ctrl+Click(Windows/Linux)或Cmd+Click(macOS)——如果跳不到任何import行,再查构建配置(webpack.config.js、next.config.js等)是否隐式引用 - 别忽略
.babelrc或vite.config.ts里的插件字段,例如@babel/plugin-transform-runtime会悄悄引入@babel/runtime,depcheck 看不见 - 删包前先
git add -p检查变更,防止误删被动态加载的包(比如 CMS 插件系统)
比 depcheck 更靠谱的替代方案有哪些
Depcheck 维护慢、TS 支持弱、生态脱节。实际项目中,以下方式组合使用更稳:
-
npm ls <pkg-name></pkg-name>查包是否被其他依赖依赖(避免“看着没用,其实是子依赖的子依赖”) -
unimported(推荐):专为现代 JS/TS 设计,支持 ESM、Vite、SWC,输出带文件路径,可直接跳转;执行npx unimported --no-cache即可 - IDE 级提示:WebStorm 能标灰未使用 import;VSCode +
typescript-hero插件也能高亮未 resolve 的模块,虽不等价于 depcheck,但日常足够预警 - CI 里加
npx depcheck --ignores=react,react-dom做基础兜底,但别当唯一依据
真正麻烦的永远不是工具报什么,而是“这个包到底是谁在用”。动态 require、运行时拼接路径、插件系统注入——这些地方 depcheck 一律沉默。人工核验那几行 require 和 config,比调参花的时间还多。


















