我是nodejs的新手。我发现在我的本地项目中安装了三个模块(express,jade,gulp)后,node_modules文件夹中有许多未知模块。
node_modules中的未知模块示例:
从我看到的其他人的教程中,在他们安装gulp之后,他们的node_modules文件夹中只有一个“gulp”文件夹,但这不是我的情况。为什么?谢谢。
答案 0 :(得分:1)
最近更新了节点包管理器(npm
),作为该更新的一部分,所有模块都安装在顶级node_modules
文件夹中。这包括您的依赖项需要安装的模块。在过去,这些模块将嵌套在node_modules
中的另一个express
文件夹中(例如)。
这就是为什么您阅读的教程说的不同,可能是在此更新之前编写的。
在npm changelog here
中提到您的依赖项现在将最大程度地安装。就目前而言 可能的,所有依赖项,它们的依赖项,以及它们 依赖项将安装在项目的node_modules文件夹中 没有嵌套。您只会看到彼此嵌套的模块 当两个(或更多)模块具有冲突的依赖关系时。
#3697这有望消除大多数Windows用户最终路径对于Explorer和其他标准来说太长的情况 处理的工具。
#6912(#4761#4037)这也意味着您的安装将从头开始扣除。
#5827这个重复数据删除甚至延伸到git deps。
#6936(#5698)现在可以识别各种命令重复数据删除。这对其他命令的行为有一些影响:
npm uninstall会删除您所在模块的所有依赖项 指定的任何其他模块都不需要。以前,它 只会删除那些碰巧安装在它下面的那些, 如果你被扣除,导致遗留下来。 npm ls现在显示 你的依赖树是围绕什么需要什么组织的 而不是那些模块在磁盘上的位置。
#6937 npm重复数据删除现在除了重复数据之外还会使树变平。在打包或发布更改时捆绑依赖项也是如此:
#2442 bundledDependencies不再需要您指定重复数据删除的子deps。 npm现在可以看到某个东西需要依赖 捆绑并自动包含它。换句话说, bundledDependencies只应包含您包含的内容 dependencies,optionalDependencies或devDependencies。
#5437当捆绑同时具有devDependency和普通依赖项子项的依赖项时,npm会捆绑子依赖项。作为一个 证明了我们对自己工作的信心,这是我自己的 依赖关系现在在npm @ 3中被展平,重复数据删除和捆绑 样式。这意味着npm @ 3无法打包或发布npm @ 3, 如果你正在攻击npm,这是值得注意的事情。