Cache `npm install` results by hashing dependencies

Usage no npm install needed!

<script type="module">
  import npmPkgr from '';



Build Status Dependency Status devDependency Status

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.


npm install -g npm-pkgr

Use npm-pkgr instead of npm install and you are done.


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=npm-pkgr* npm-pkgr

Will give you some debug information.


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


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


Use the --cachepath option if you want use a specific folder for the cache folder.

npm-pkgr --cachepath=/data/node-vXXX/.npm-pkgr


  • 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