为什么不能像其他包管理器一样将npm放在一个地方?

时间:2015-11-24 09:11:41

标签: npm npm-install

我正在试图弄清楚为什么在全球范围内安装软件包是个坏主意。

以下是npm faq的引用: https://docs.npmjs.com/misc/faq#why-can-t-npm-just-put-everything-in-one-place-like-other-package-managers

  

无论如何,我真的希望旧式“全球化”。

     

编写自己的包管理器。如果你真的想要,你甚至可以在shell脚本中包装npm。

     

npm不会帮助你做一些已知不好的事情。

什么?

我来自红宝石背景。有一个名为bundler的包管理器,它可以全局安装所有的gem(包)(每个ruby版本)。只要有新项目并且我运行bundle install,捆绑商就会检查Gemfilepackage.json)中是否已经全局安装了兼容版本的宝石。如果有,bundler将不会全局重新安装它们或在本地安装它们。唯一的要求是满足所有依赖项的版本。

例如:

包含依赖关系C: '^1.0.0'的包A 和包B具有依赖关系C: '<1.2.0'

假设包C具有以下版本: '1.0.0', '1.1.0', '1.2.0'

然后,Bundler将使用软件包C版本“1.1.0”。否则,它会抱怨你的依赖关系无法匹配。

对于捆绑包这么多年来怎么样,甚至在npm存在之前,对于npm来说它无法工作?

0 个答案:

没有答案