2016-04-03 35 views
1

我查看了npm的package.json文件,发现npm实际上只是一个node.js包,它具有许多依赖关系,如lodash。这意味着left-pad包发生的情况会破坏很多npm包,也会影响npm。 我发现存在一些倾向:pip是用python编写的,Ruby中的RubyGems,PHP中的Composer,Java中的Maven等等。但用目标语言编写包管理器是否好?为什么npm是用JavaScript编写的?

+1

因为“为什么不呢?” –

+0

另一方面,'node'使用Python和C++运行,所以它不像整个节点堆栈只用JS写入 – Quill

回答

2

的真正原因是,NPM是JavaScript的运行时环境中的默认包管理器Node.js的

是很自然的在其运行时的语言来编写的包管理器。

3

更具体地说npm是用npm写的 - JavaScript与npm leftpad事件没有任何关系。我无法想象他们没有使用他们自己的产品,原因如下:

  1. 这是一个管理软件依赖关系的工具。他们必须使用一个。你会建议他们使用别人的吗?当然,如果你信任你的产品,你会自己使用它。
  2. 左边的“事件”是一个政策漏洞,而不是软件缺陷,他们显然没有预料到或者认为这是严重的问题,直到发生严重事件。因此,为什么这是不使用npm的原因。
  3. 在成千上万的托管软件包中,它不可能发生得太频繁,或者很久以前就会被修复。这相当令人印象深刻。
  4. 修复只是更新缓存策略非常简单,所以对npm不构成威胁。
  5. 其他包管理工具有类似的问题(或更糟糕的)。例如,由于缺乏资金,整个maven资料库都处于脱机状态。这不太可能发生在npm上,因为它是集中式的,并且有许多大型利益相关者对确保它保持稳定感兴趣。
  6. 这些事件使生态系统更加稳定和成熟。
  7. 就像所有的故事一样,这一切都会很快消失。
+0

_“这不太可能发生在npm上。”_为什么? npm不是分散式的,服务器还没有免费。 –

+1

正是因为这个原因。 npm是集中式的。包括谷歌,微软,苹果在内的很多公司都在npm上有软件,因此如果资金耗尽,只有一个回购协议可以拯救。 Maven被分散,任何一个回购都会失败并引发混乱。 – chriskelly

+0

有趣,这是有道理的:) –

相关问题