Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么npm是用JavaScript编写的?_Javascript_Node.js_Npm - Fatal编程技术网

为什么npm是用JavaScript编写的?

为什么npm是用JavaScript编写的?,javascript,node.js,npm,Javascript,Node.js,Npm,我查看了npm的package.json文件,发现npm实际上只是一个node.js包,它有很多依赖项,比如lodash。这意味着发生在破坏了大量npm包的包上的情况也会影响npm。 我看到了一些趋势:pip是用python编写的,RubyGems是用Ruby编写的,Composer是用PHP编写的,Maven是用Java编写的,等等。但是用目标语言编写包管理器好吗?原因就在于npm是JavaScript runtime environment Node.js的默认包管理器 包管理器使用运行时的

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

原因就在于npm是JavaScript runtime environment Node.js的默认包管理器


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

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

  • 它是管理软件依赖关系的工具。他们必须使用一个。你会建议他们用别人的吗?当然,如果你信任你的产品,你会自己使用它 左撇子“事件”是一个政策缺陷,而不仅仅是一个软件缺陷,他们显然没有预料到或认为是一个严重的问题,直到严重的事情发生。因此,为什么这会成为不使用npm的理由
  • 在托管的数十万个软件包中,它不可能发生得太频繁,或者早就被修复了。那太令人印象深刻了
  • 只需更新缓存策略就可以很容易地修复,因此不会对npm造成威胁
  • 其他包管理工具也有类似的问题(甚至更糟)。例如,整个maven存储库由于缺乏资金而脱机。这不太可能发生在npm上,因为它是集中的,并且有许多大型利益相关者对确保它保持不变感兴趣
  • 这样的事件使生态系统更加稳定和成熟
  • 就像所有的故事一样,这件事很快就会结束

  • 因为“为什么不?”在一个旁注中,节点> /Cuff>用Python和C++运行,所以它不像整个节点栈是用JS写的“这不太可能发生在NPM上”为什么?npm不是分散的,服务器也不是免费的。正是因为这个原因。npm是集中的。包括谷歌、微软、苹果在内的太多公司都在npm上安装了软件,因此,如果资金耗尽,只有一家回购协议可以纾困。Maven分散化后,任何一次回购都可能失败并造成混乱。有趣的是,这是有道理的:)