I don't have an opinion about pnpm per se but I would suggest that you change your usage of "memory" for "disk space". "pnpm saves gigabytes of _disk space_".
I know in some languages the two can be interchangeable so that's why i'm pointing it out.
You know what, I could give it a try. I still am unconvinced by npm's decision to flatten the dependency tree, so I guess anothr approach is welcome.
Do you plan to support yarn.lock files as well?
Without a flat tree npm on Windows was nearly unusable. I dont't want to blame npm or Windows or whoever, just saying that working in a cross platform environment was pretty painful and now it's much better.
Try it for sure and if you have any issues feel free to file issues on github.
We have our own shrinkwrap.yaml file that looks like this: https://github.com/pnpm/node-package-manager-benchmark/blob/master/shrinkwrap.yaml
We have no plans currently to support yarn.lock. I can imagine someone might come up with a yarn.lock/shrinkwrap.yaml converter in the future
shrinkwrap.yaml is in fact way easier to read and understand, I really like it. Having said that, it is a lot easier to sell the idea of replacing NPM with Yarn than replacing NPM with pnpm. Any way you can push Yarn to adopt the pnpm approach?
TBH I would prefer merging pnpm to npm instead. I don't see any reason to further promote Yarn which is already overrated.
The concept of linking packages existed long before Yarn. First commit to Yarn was on Jan 23, 2016.
The concept of linking packages was introduced by Alexander Gugel in the ied package, first commit on Aug 6, 2015.
Approximately half year later Rico Sta. Cruz has created pnpm which was pretty similar to ied but with better npm compatibility.
Creators of Yarn did know about the possibility to use symlinks and links. You can search in their repo for discussions about it. They discussed the possibility of using symlinks back when Yarn was not public and due to many reasons decided not to use symlinks.
Hopefully it should be easier to move to pnpm from npm.
pnpm uses npm's config system.
pnpm has the same CLI as npm ("pnpm install foo" not "pnpm add foo")
pnpm overrides only some of npm's commands: install, uninstall and link. Other commands are passed through to npm. "pnpm init" is same as "npm init"