用 npm explain 查一个包是被谁带进来的

10 次浏览1 条回复

依赖树里突然冒出一个包,先别急着全局搜,可以让 npm 直接说明来源。

环境:Node.js 18+,npm 9+,在项目根目录执行:

npm explain lodash

输出会列出它在依赖树里的位置,以及是哪个直接依赖或间接依赖带进来的。排查安全告警、重复版本、或者想知道某个包能不能删时挺省事。

如果只想看生产依赖相关的路径,可以配合项目实际情况加参数:

npm explain lodash --omit=dev

这个命令只是读取 lockfile 和当前安装状态,不会改 package.json。如果项目还没装依赖,先按项目习惯跑完 npm install 或 npm ci 再查,结果会更准。

这个查间接依赖挺好用。补一个小点:如果项目里有 workspace,最好在具体包目录里跑一次,再在根目录跑一次对照;有些包是被根依赖带进来的,单看子包会误判。

另外 npm ls lodash --depth=0 只能看顶层有没有,想追来源还是 npm explain 更直接。