3

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

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

无论如何,我真的想要旧风格的“全球一切”风格。

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

npm 不会帮助你做一些被认为是坏主意的事情。

什么?

我来自红宝石背景。有一个包管理器bundler,它全局安装所有的 gem(包)(每个 ruby​​ 版本)。每当有一个新项目并且我运行bundle install时,bundler 都会检查是否已经在( )中列出了全局安装的兼容版本的 gem 。如果有,bundler 不会在全局范围内重新安装它们或在本地安装它们。唯一的要求是满足所有依赖项的版本。Gemfilepackage.json

例如:

有一个具有依赖关系的包 A 和具有依赖关系的C: '^1.0.0' 包 BC: '<1.2.0'

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

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

为什么在 npm 存在之前它对 bundler 工作了这么多年,而对于 npm 却不能工作?

4

0 回答 0