Dependency injection 为什么npm安装了我的package.json文件中没有列出的依赖项?

Dependency injection 为什么npm安装了我的package.json文件中没有列出的依赖项?,dependency-injection,npm,package,Dependency Injection,Npm,Package,我很难找到这个问题的答案 tl;博士在开始一个新的Node/Express项目之前,我刚刚运行了npm update npm-g。当我为此项目运行npm install时,npm会安装大量未在我的package.json文件夹中列出的新依赖项。我以前从没见过这么多 package.json文件: 节点\u模块文件夹: 这里发生了什么——为什么npm要安装所有这些依赖项,我该如何修复这些依赖项 我甚至在上周的一个老项目上测试了npm安装,它也有类似的行为 ps-有人提到,即使依赖项也需要依赖项

我很难找到这个问题的答案

tl;博士在开始一个新的Node/Express项目之前,我刚刚运行了
npm update npm-g
。当我为此项目运行
npm install
时,npm会安装大量未在我的package.json文件夹中列出的新依赖项。我以前从没见过这么多

  • package.json文件:
  • 节点\u模块文件夹:
这里发生了什么——为什么npm要安装所有这些依赖项,我该如何修复这些依赖项

我甚至在上周的一个老项目上测试了
npm安装
,它也有类似的行为


ps-有人提到,即使依赖项也需要依赖项。像这样

是的,这些是您的依赖项的依赖项。将其视为树状结构,将项目作为根节点。树中的所有内容都需要下载。

这里的答案是:,但基本上没有问题。不熟悉的包是您的包的依赖项以前,它们嵌套在包的文件夹中,因此经常被忽略。自NPM版本3.0.0以来,它们不再嵌套

从NPM 3.0.0发行说明中:

您的依赖项现在将被安装到最大平面上。尽可能将所有依赖项及其依赖项安装在项目的node_modules文件夹中,不进行嵌套。当两个(或多个)模块具有冲突的依赖项时,您将只看到嵌套在另一个模块下面的模块

可能重复的