npm 依赖不是直接写的,先用 npm explain 看是谁带进来的

12 次浏览2 条回复

项目里某个包突然升级、体积变大,或者删了直接依赖却发现它还在时,可以先查依赖链:

npm explain lodash

把 lodash 换成实际包名即可。输出会列出它是被哪个顶层依赖一路带进来的,比只看 package-lock.json 直观;这个命令只读取当前项目的依赖树,不会修改安装结果。

环境:Node.js 18+、npm 8+,项目目录里要已经安装目标包。

补一个容易忽略的点:npm workspaces 项目里最好从根目录查,必要时加 -w <workspace-name> 指定工作区。npm why 是它的别名;如果包只出现在 lockfile、当前安装树里并没有,explain 也不一定能查到。

如果想让脚本消费结果,可以加 --json:

npm explain lodash --json

另外 CI 里最好在和实际构建一致的 npm ci 环境跑;本地 node_modules 多装了东西时,查出来的依赖链可能和 CI 不一样。