现在npm installs dependencies in a flat structure node_modules
dir拥挤了很多依赖项,我很难跟踪为什么会有特定的依赖项。
例如,在安装我的某个依赖项时,会收到一条警告,指出cross-spawn-asyc已弃用,而cross-spawn应该被使用。但仔细观察我发现我的依赖实际上是使用 cross-spawn ,但显然其依赖层次结构中更深层次的东西仍然使用旧的 cross-spawn-async 库。 / p>
如何找到导致此问题的依赖项,而不是通过package.json
下的100多个目录中的node_modules
?
答案 0 :(得分:2)
您可以使用npm ls
:
npm ls cross-spawn-asya
这将显示包含给定包的所有依赖关系树。这看起来类似于(以minimatch为例):
+-- babel-preset-es2015@6.6.0
| `-- babel-plugin-transform-regenerator@6.6.5
| `-- babel-core@6.7.6
| `-- minimatch@2.0.10
+-- forever@0.15.1
| `-- forever-monitor@1.6.0
| `-- minimatch@2.0.10
+-- glob@7.0.3
| `-- minimatch@3.0.0
+-- grunt-contrib-jshint@0.11.3
| `-- jshint@2.8.0
| +-- cli@0.6.6
| | `-- glob@3.2.11
| | `-- minimatch@0.3.0
| `-- minimatch@2.0.10
答案 1 :(得分:1)
我认为这个npm命令可能有所帮助:
npm ls <package_name>
它将以树形式向您显示包的依赖关系结构。您正在寻找的包装将以不同的颜色显示或以其他方式突出显示,因此很容易找到它。