我使用npm install --dev
来安装package.json
文件中列出的依赖项,似乎不是在平面结构中安装所有软件包,而是在模块目录中安装每个模块的依赖项
我不得不取消它,因为它花费了很多,因为许多依赖应该已经满足但它必须在不同的嵌套目录中重新下载它们(我希望没有循环,它最终会有结束)...
使用树命令,这是我得到的一个例子:
├── 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
为什么会发生这种情况的任何想法?
答案 0 :(得分:14)
别担心,这实际上是Npm的设计方式。您甚至可能会多次安装相同的模块(尽管通常使用不同的版本)。
我们的想法是,在node_modules下安装的每个模块都是该模块的一个独立安装及其依赖项和必要的版本 - 它不依赖于全局安装的模块。
如果您担心多次安装模块的效率低下,则需要实验npm dedupe。
答案 1 :(得分:2)