为何执行npm ls inflight仅返回1条结果?已尝试--all参数仍无效
为什么
npm ls inflight仅返回一条结果? 这是npm依赖扁平化机制导致的,核心原因如下:
相同版本依赖的共享提升:npm会自动将相同版本的依赖包提升到尽可能高的层级(通常是顶层
node_modules),避免重复安装同一版本的包。你执行npm ls glob看到多个依赖,但这些glob依赖的inflight是同一个版本,所以npm只保留了一份inflight实例。npm ls inflight只会显示这份实例的一条依赖路径,其他依赖树里的inflight都会指向这个共享包,不会重复输出。多版本依赖才会显示多条结果:只有当不同上游依赖(比如不同版本的
glob)依赖了不同版本的inflight时,npm才会在不同层级安装多个inflight实例,这时npm ls inflight才会返回多条路径。--all参数的局限性:--all会展示所有嵌套依赖,但如果依赖已经被扁平化共享,它依然只会显示实际存在的那一份inflight的路径,不会把所有引用它的上游依赖都列出来。
结合你的场景:删除cspell前,cspell和dot-object依赖的glob都指向同一个版本的inflight,npm把它提升后只显示了cspell这条路径;删除cspell后,剩下的dot-object对应的glob依然依赖这份inflight,所以路径就变成了dot-object下的层级。
内容的提问来源于stack exchange,提问作者jbarradas
相关产品推荐
相关产品推荐

