Awesome
npm-pkgr
npm-pkgr
caches npm install
results by hashing dependencies from package.json
and npm-shrinkwrap.json
.
If your package.json
did not change from last build, then you will immediately get
either:
- a symlink
node_modules
.. - a full
node_modules
copy..
.. to the latest build result located in ~/.npm-pkgr
npm-pkgr
frees your deployments from npm network issues and will make your
deploys run fast.
Usage
npm install -g npm-pkgr
Use npm-pkgr
instead of npm install
and you are done.
npm-pkgr
Hashes and finds the latest build corresponding to package.json
and npm-shrinkwrap.json
.
npm-pkgr --production
Hashes and finds the latest build corresponding to npm-shrinkwrap.json
.
npm-pkgr --show-npm-output
Displays npm
's output, if npm install
is run.
Every other flag passed to npm-pkgr
is passed down to the npm install
command.
Cache folder
The cache folder used by npm-pkgr
is ~/.npm-pkgr
for the current user.
npm-pkgr prune
Removes cache folders older than a month (in your ~/.npm-pkgr
folder)
Debug
DEBUG=npm-pkgr* npm-pkgr
Will give you some debug information.
strategy
Default strategy is to symlink $CWD/node_modules -> ~/.npm-pkgr/$hash/node_modules
.
You can also get a full copy of the ~/.npm-pkgr/$hash/node_modules
.
npm-pkgr --strategy=copy
Careful, if you --strategy copy
, you will end up installing the copy package
symlinks
Use the --symlinks
option if you wish make some files or folders from your project available during npm install
.
For example if your project includes a local .cache
folder for the npm cache and a node_shrinkwrap
folder for pre-packaged modules, then you can use the following command to make those resources available when npm-pkgr runs npm install
:
npm-pkgr --symlinks=.cache,node_shrinkwrap
cachepath
Use the --cachepath
option if you want use a specific folder for the cache folder.
npm-pkgr --cachepath=/data/node-vXXX/.npm-pkgr
features
- insanely fast
npm install
if already done npm install
once in your CI server, deploy everywhere- solves shrinkwrap inconsistencies/problems
- solves devDependencies updates even when you use a shrinkwrap
- concurrent builds
- get symlinks or copy to cached
node_modules