为什么npm是用JavaScript编写的?

时间:2016-04-03 09:52:50

标签: javascript node.js npm

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

2 个答案:

答案 0 :(得分:4)

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

  1. 这是一个管理软件依赖项的工具。他们必须使用一个。你会建议他们使用别人的吗?当然,如果您信任您的产品,您将自己使用它。
  2. 左撇子“事件”是一个政策缺陷,而不是软件缺陷,在发生严重事件之前,他们显然没有预测或认为这是一个严重的问题。因此,为什么这不是使用npm的原因。
  3. 在托管的数十万个软件包中,它不可能经常发生,或者很久以前就已经修复过了。这真是令人印象深刻。
  4. 修复缓存策略非常容易,因此对npm不构成威胁。
  5. 其他包管理工具也存在类似问题(或更糟)。例如,由于缺乏资金,整个maven存储库都脱机了。这不太可能发生在npm,因为它是集中的,并且有许多大型利益相关者有兴趣确保它保持运转。
  6. 这些事件使生态系统更加稳定和成熟。
  7. 像所有的故事一样,这很快就会爆发。

答案 1 :(得分:3)

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

包管理器很自然地用它的运行时语言编写。