I used npm install --dev
to install the dependencies listed in a package.json
file and it seems that rather than installing all the packages in a flat structure, it is installing the dependencies of each module inside the module's directory.
I had to cancel it because it was taking a lot, because many dependencies should have been already satisfied but it had to re-download them in a different nested directory (and I hope that there are not loops and it would have eventually finished)...
Using the tree command this is an example of what I am getting:
├── 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
Any ideas why this might be happening?
The easy fix is to use the npm audit --fix which will look for updates that can be updated to fix those automatically.
NPM installs devDependencies within the package. json file. The 'npm install' command should add all the dependencies and devDependencies automatically during installation. If you need to add specific devDependencies to your project, you can use this command- 'npm install --save-dev'.
By default, npm install will install all modules listed as dependencies in package.json . With the --production flag (or when the NODE_ENV environment variable is set to production ), npm will not install modules listed in devDependencies .
Don't worry, that's actually the way Npm was designed. You may even see the same module installed many times (though typically with different versions).
The idea is that each module installed under node_modules is a somewhat self-contained installation of that module with its dependencies and the necessary versions -- it doesn't depend on modules installed globally.
If you are worried about inefficiency of modules being installed multiple times, the experimental npm dedupe.
dedupe is helpful, as Jonathan Warden says. However, try npm3. For a simple package such as gulp-jscs the install of npm3 was 20% fewer files, 5% less disk space. And tree depth went from 22 to 5. However npm3 was 2x slower for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With