node_modules文件夹中有许多未知的模块

我是nodejs的新手。 我发现在我的本地项目中安装了三个模块(express,jade,gulp)后,node_modules文件夹中有很多未知的模块。

node_modules中的未知模块示例:

  • 变化
  • 状态
  • 发送
  • 诺言

从我从其他人那里看到的教程中,在安装了gulp之后,node_modules文件夹中只有一个“gulp”文件夹,但这不是我的情况。 为什么? 谢谢。

最近更新了节点包pipe理器( npm ),作为该更新的一部分,所有模块都安装在顶层node_modules文件夹中。 这包括您的依赖关系需要安装的模块。 在过去,这些模块将被嵌套在另外一个node_modules文件夹中(例如)。

这就是为什么您阅读的教程有所不同,可能是在更新之前编写的。

在这里的npm更新日志中提到

现在您的依赖关系将被最大限度地安装。 只要有可能,所有的依赖关系,它们的依赖关系,以及它们的依赖关系都将被安装在项目的node_modules文件夹中,而不会嵌套。 当两个(或更多)模块具有冲突的依赖关系时,只能看到嵌套在另一个之下的模块。

#3697这将有希望消除大多数Windows用户最终遇到的浏览器和其他标准工具处理时间过长的情况。

#6912(#4761#4037)这也意味着您的安装将从一开始就被删除。

#5827这个重复甚至延伸到git deps。

#6936(#5698)现在有各种命令可以清除重复数据。 这对其他命令的行为有一些影响:

npm卸载将删除您指定的任何其他模块不需要的模块的依赖关系。 以前,它只会删除那些发生在其下的安装,如果你曾经被删除过,就会导致遗留下来。 npm ls现在向您显示您的依赖关系树,它围绕什么需要什么而不是在哪些模块在磁盘上。

#6937 npm重复数据删除现在除了减less重叠树。 在打包或发布更改时捆绑依赖关系:

#2442 bundledDependencies不再需要您指定重复子代码。 npm现在可以看到捆绑的东西需要依赖,并自动包含它。 换句话说,bundledDependencies应该只包含你在依赖关系,optionalDependencies或devDependencies中包含的东西。

#5437绑定一个依赖项,这个依赖项既是devDependency又是一个常规依赖项的子项,npm捆绑了子依赖项。 为了certificate我们对自己工作的信心,npm自己的依赖关系现在被压扁,被删除,并以npm @ 3风格捆绑在一起。 这意味着npm @ 3不能被npm @ 2打包或发布,如果你正在使用npm,这是需要注意的。