A very popular question these days :) I'm also interested in something like that.
I had two ideas in mind, I wonder what others say about this:
1. Scoping packages
I was thinking something which would be a bit manual in the beginning - as you install a package, clone it into your scoped package (@username/package). I'm thinking a script could be made to do that, perhaps even an npm wrapper. Perhaps smart enough to check if you already have such a package.
But this feels quite wrong. It would duplicate a crapload of packages. Furthermore, if the script becomes easy to use and transient (which is basically the only way it could be useful), it would get spread and get used massively, potentially requiring npm to scale beyond anything reasonable (instead of 300,000 packages, good deal of which get duplicated for each of a humble estimate of a few million users - that would mean a whole lot more stuff to handle. The actual content would get deduped, I guess, but still feels like unnecessary burden.
2. Include packages in source control.
Basically add node_modules to source control. Then there's nothing to be installed, everything is already there. Not sure if and how much more complicated it gets when the code gets deployed to hosted platforms.
What else, what are other _easy_ solutions we could have?