npm嵌套的依赖关系,为什么不模仿gem?

我今天安装了sails.js ,看看它是如何一遍又一遍地安装相同的软件包(我的应用程序依赖项的依赖),为什么npm不使用像系统一样的gem? 在全球范围内保存库和他的不同版本,如果你有多个项目在服务器上,而不是一遍又一遍地重复安装相同的库,那么共享相同的库会很酷。(我知道这是npm链接的解决方法,不被认为是最佳实践)。

依赖pipe理是困难的。 对于不共享软件包,坚持每个软件包都有自己的node_modules文件夹,npm非常强烈的意见。 这样可以避免很多潜在的隐患。 这些软件包相当小,使用多一点的磁盘空间比尝试追查与依赖版本相关的问题要好得多。

另外有趣的是,注意何时在git中包含node_modules。 http://www.futurealoof.com/posts/nodemodules-in-git.html

我可以为这种functionselect提供的最佳猜测是产品可以使用的不同版本的库。 也许您使用Connect 2.8,但是您可能正在使用与您的Connect版本不兼容的Connect 1.5。