npminstall
![npm download](https://img.shields.io/npm/dm/npminstall.svg?style=flat-square)
Let npm install
fast and easy.
Installation
$ npm install npminstall --save
Quick start
const co = require('co');
const npminstall = require('npminstall');
co(function*() {
yield npminstall({
root: process.cwd(),
});
}).catch(function(err) {
console.error(err.stack);
});
node_modules
directory
Two rules:
- The latest version of modules will link at
options.storeDir
's node_modules
. - Module's dependencies will link at module's
node_modules
.
e.g.:
- app:
{ "dependencies": { "a": "1.0.0" } }
(root) - a@1.0.0:
{ "dependencies": { "c": "2.0.0", "b": "1.0.0" } }
- b@1.0.0:
{ "dependencies": { "c": "1.0.0" } }
- c@1.0.0 & c@2.0.0:
{ "dependencies": { } }
app/
├── package.json
└── node_modules/
├── .npminstall/
│ ├── a/
│ │ └── 1.0.0/
│ │ ├── package.json
│ │ └── node_modules/
│ │ ├── b -> ../../../b/1.0.0
│ │ └── c -> ../../../c/2.0.0
│ ├── b/
│ │ └── 1.0.0/
│ │ ├── package.json
│ │ └── node_modules/
│ │ └── c -> ../../../c/1.0.0
│ ├── c/
│ │ ├── 1.0.0/
│ │ └── package.json
│ │ └── 2.0.0/
│ │ └── package.json
│ └── node_modules/
│ ├── b -> ../b/1.0.0 (latest version)
│ └── c -> ../c/2.0.0 (latest version)
└── a -> .npminstall/a/1.0.0
a@1.0.0
is root package, won't create link at app/node_modules/.npminstall/node_modules/a@
.
Benchmarks
- npminstall@0.7.0
- pnpm@0.18.0
- npm@2.14.12
cli | real | user | sys |
---|
npminstall | 0m13.808s | 0m9.679s | 0m4.854s |
npminstall with cache | 0m11.712s | 0m8.769s | 0m4.377s |
npminstall --no-cache | 0m11.778s | 0m9.179s | 0m4.358s |
pnpm | 0m17.991s | 0m13.847s | 0m5.205s |
npm | 0m34.436s | 0m30.282s | 0m9.759s |
npm with cache | 0m36.533s | 0m24.625s | 0m7.562s |
License
MIT