为什么npm是用JavaScript编写的?

我查看了npm的package.json文件,发现npm实际上只是一个node.js包,它有很多依赖,比如lodash。 这意味着左垫包裹破坏了很多npm包的情况也会影响npm。 我看到有一些倾向:pip是用python编写的,Ruby中的RubyGems,PHP中的Composer,Java中的Maven等等。 但是用目标语言编写包pipe理器是否好?

更具体地说,npm是使用npm编写的 – JavaScript与npm leftpad事件没有任何关系 。 我不能想象他们没有使用自己的产品有几个原因:

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

原因在于npm是JavaScript运行时环境Node.js的默认包pipe理器

包pipe理器用其运行时的语言编写是很自然的。