我正在试图弄清楚为什么在全球范围内安装软件包是个坏主意。
以下是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
,捆绑商就会检查Gemfile
(package.json
)中是否已经全局安装了兼容版本的宝石。如果有,bundler将不会全局重新安装它们或在本地安装它们。唯一的要求是满足所有依赖项的版本。
例如:
包含依赖关系C: '^1.0.0'
的包A
和包B具有依赖关系C: '<1.2.0'
假设包C具有以下版本:
'1.0.0', '1.1.0', '1.2.0'
对于捆绑包这么多年来怎么样,甚至在npm存在之前,对于npm来说它无法工作?