I've been enjoying pnpm as my node package manager for about a year now.
<https://github.com/pnpm/pnpm>
It centrally downloads all of the modules and then "symlinks" them into your `node_modules` folder.
This is nice because one, it uses less disk space, two, if you've already downloaded a package at a particular version it links it out of the local repo.
Also uses shrinkwrap to handle package locking.
I agree, pnpm is excellent. The node_modules directory can easily take up hundreds of megabytes, and the storage space savings that pnpm provides are really convenient when you write a lot of small projects with similar sets of dependencies. I did a comprehensive benchmarking comparison on npm, pnpm, and yarn a while back, and pnpm was the clear winner for my needs [1]. Those benchmarks are admittedly outdated now because, as this submission points out, npm 6 introduced significant improvements over npm 5. Despite that, pnpm is still an underappreciated contender in the space.
- [1] https://github.com/pnpm/pnpm
- [2] https://intoli.com/blog/node-package-manager-benchmarks/