npm正在以一种奇怪的递归方式安装依赖项
我使用npm正在以一种奇怪的递归方式安装依赖项,npm,Npm,我使用npm install--dev来安装package.json文件中列出的依赖项,它似乎不是在平面结构中安装所有包,而是在模块目录中安装每个模块的依赖项 我不得不取消它,因为它花费了很多时间,因为许多依赖项应该已经满足了,但它必须在不同的嵌套目录中重新下载它们(我希望没有循环,它最终会完成) 使用tree命令,这是我得到的一个示例: ├── grunt-cli │ └── node_modules │ ├── findup-sync │ │ └── node
npm install--dev
来安装package.json
文件中列出的依赖项,它似乎不是在平面结构中安装所有包,而是在模块目录中安装每个模块的依赖项
我不得不取消它,因为它花费了很多时间,因为许多依赖项应该已经满足了,但它必须在不同的嵌套目录中重新下载它们(我希望没有循环,它最终会完成)
使用tree命令,这是我得到的一个示例:
├── grunt-cli
│ └── node_modules
│ ├── findup-sync
│ │ └── node_modules
│ │ ├── glob
│ │ │ └── node_modules
│ │ │ ├── minimatch
│ │ │ │ └── node_modules
│ │ │ │ ├── lru-cache
│ │ │ │ │ └── node_modules
│ │ │ │ │ └── weak
│ │ │ │ │ └── node_modules
│ │ │ │ │ └── mocha
│ │ │ │ │ └── node_modules
│ │ │ │ │ ├── coffee-script
│ │ │ │ │ │ └── node_modules
│ │ │ │ │ │ └── jison
│ │ │ │ │ │ └── node_modules
│ │ │ │ │ │ └── browserify
│ │ │ │ │ │ └── node_modules
│ │ │ │ │ │ ├── browser-resolve
│ │ │ │ │ │ │ └── example
你知道为什么会发生这种情况吗?别担心,Npm就是这样设计的。您甚至可能会看到同一个模块被多次安装(尽管通常使用不同的版本) 其思想是,安装在node_modules下的每个模块都是该模块的一个自包含式安装,带有其依赖项和必要的版本——它不依赖于全局安装的模块
如果您担心多次安装的模块效率低下,正如Jonathan Warden所说,实验性的重复数据消除是有帮助的。然而。对于gulp jscs这样的简单软件包,npm3的安装减少了20%的文件,减少了5%的磁盘空间。树的深度从22到5。然而,npm3对我来说慢了2倍。但为什么?当我在网上搜索时,我正在努力为这种方法找到一个有效的论据。整体安装或使用平面结构有什么问题?这实际上解决了什么问题?似乎您可以在平面结构中安装所有内容,只需在目录名中包含版本以避免冲突。当前的实现似乎效率很低。请查看这篇文章@Danny:Thank@jackyalcine的链接。我对NPM非常失望。但是那篇文章澄清了这一切,并为我提供了一些很好的工具来管理目录深度问题。(是的,很遗憾,我正在使用windoz)。很高兴这对@JohnHenckel有帮助!