npm nested dependencies, why not imitate gem?

I was installing today sails.js, and see how it install the same package over and over again (dependencies of my app dependency), so why npm not use a gem like system? keep it globally the libraries and his different versions, It will be cool to share the same lib if you have multiple projects on the server and not installing over and over again the same libs (I know that is a workaround with npm link but seems that is not considered a best practice).

Dependency management is difficult. npm is very strong opinionated about not sharing packages and insisting that every package have its own node_modules folder. This avoids a lot of potential pitfalls can be avoided. The packages are pretty small and it almost always better to use a tiny bit more disk space than try to chase down issues related to dependency versioning.

Also interesting, take note of when to include node_modules in git. http://www.futurealoof.com/posts/nodemodules-in-git.html

The best guess that I can give for this choice of functionality is the differing versions of a library that products can use. Perhaps you use Connect 2.8 but a dependency you have might be using Connect 1.5 which is incompatible with your Connect version.