2013-04-09 94 views
1

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

回答

2

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

+1

准确!我认为这是艾萨克这样做的主要原因。去年我一直在使用npm进行比赛和为我们的所有项目进行比赛,这真是太棒了 - 我坚信他做出了正确的选择。 – mikermcneil 2013-04-13 16:31:51

+2

我完全没有抱怨,这是一个非常可靠的工具。 – 2013-04-13 16:33:33

3

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

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