用 npm explain 看依赖为什么被装进来

17 次浏览2 条回复

排查 node_modules 里某个包到底是谁带进来的,不一定要先翻 lockfile。npm 自带的 explain 挺适合先看一眼。

环境:Node.js 16+,npm 8+,项目根目录执行:

npm explain lodash

它会把依赖链打出来,比如某个顶层包依赖了它,或者它是某个工具的间接依赖。想看另一个包也一样:

npm explain eslint

这个命令只读,不会改 package.json 或 lockfile。遇到安全扫描提示、包体积异常,或者想删依赖前确认有没有别的地方还在用时,先跑一下挺省时间。

这个命令还有个小细节挺好用:如果你不确定包名是不是直接依赖,可以顺手对比一下:

npm ls lodash --depth=0
npm explain lodash

前一个更像看顶层有没有声明,后一个看完整来路。排依赖膨胀时两个一起用,信息会清楚很多。

还可以加个 --json,接脚本处理时会舒服一点:

npm explain lodash --json

人眼看的话默认输出更直观;如果是想在 CI 里临时抓依赖链,JSON 版比较不容易被格式变化坑到。