我是nodejs的新手。当我在本地项目中安装了三个模块(express,jade,gulp)后,我发现在node_modules文件夹中有许多未知模块。
node_modules中的未知模块示例:
从我从其他人那里看到的教程中,他们安装了gulp后,他们的node_modules文件夹中将只有一个“ gulp”文件夹,但这不是我的情况。为什么?谢谢你。
节点软件包管理器(npm
)最近更新了,作为该更新的一部分,所有模块都安装在顶层node_modules
文件夹中。这包括依赖项需要安装的模块。过去,这些模块将嵌套node_modules
在express
(例如)中的另一个文件夹中。
这就是为什么您阅读的教程说的有所不同,原因很可能是在此更新之前编写的。
在这里的npm changelog中提到了它
现在,您的依赖项将最大程度地平面安装。在可能的情况下,所有依赖关系及其依赖关系和THEIR依赖关系都将安装在项目的node_modules文件夹中,而不会嵌套。当两个(或更多)模块具有相互依赖的依赖关系时,您只会看到模块彼此嵌套。
#3697这有望消除大多数Windows用户最终使用路径而导致资源管理器和其他标准工具无法处理的情况。
#6912(#4761#4037)这也意味着您的安装将从一开始就被重复数据删除。
#5827此重复数据删除甚至扩展到git deps。
#6936(#5698)现在可以识别各种重复数据删除命令。这对其他命令的行为有一些影响:
npm uninstall会删除您指定的模块的任何其他模块不需要的依赖项。以前,它只会删除恰好安装在其下的那些文件,如果您进行过重复数据删除,则会导致剩余的文件残骸。现在,npm ls会向您显示依赖项树,它围绕什么需要什么而组织,而不是那些模块在磁盘上的位置。
#6937 npm重复数据删除现在除了消除重复数据以外,还使树变平坦。打包或发布更改时也捆绑依赖项:
#2442 bundledDependencies不再要求您指定重复数据删除的子dep。现在,npm可以看到捆绑的东西需要依赖,并自动包含它。换句话说,bundleDependencies仅应包括您包含在依赖项,optionalDependencies或devDependencies中的内容。
#5437捆绑既是devDependency又是常规依赖项的子项的依赖项时,npm会捆绑子项依赖项。为了证明我们对自己的工作充满信心,现在以npm @ 3样式将npm自己的依赖项进行了展平,重复数据删除和捆绑。这意味着npm @ 2不能打包或发布npm @ 3,如果您在npm上进行黑客攻击,则需要注意这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句