I know that npm now has a per-user cache in ~/.npm:
https://docs.npmjs.com/cli/v7/commands/npm-cache
I am not sure if it uses CoW to bring those packages into each project. If it did, that would be efficient and speed up "npm install" if the cache was warm.