找到在Node.js中带来另一个依赖项的依赖项

时间:2016-08-14 09:59:37

标签: node.js npm npm-install

现在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

2 个答案:

答案 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>

它将以树形式向您显示包的依赖关系结构。您正在寻找的包装将以不同的颜色显示或以其他方式突出显示,因此很容易找到它。