我查看了npm的package.json文件,发现npm实际上只是一个node.js包,它具有许多依赖关系,如lodash。这意味着left-pad包发生的情况会破坏很多npm包,也会影响npm。 我发现存在一些倾向:pip是用python编写的,Ruby中的RubyGems,PHP中的Composer,Java中的Maven等等。但用目标语言编写包管理器是否好?为什么npm是用JavaScript编写的?
回答
的真正原因是,NPM是JavaScript的运行时环境中的默认包管理器Node.js的
是很自然的在其运行时的语言来编写的包管理器。
更具体地说npm是用npm写的 - JavaScript与npm leftpad事件没有任何关系。我无法想象他们没有使用他们自己的产品,原因如下:
- 这是一个管理软件依赖关系的工具。他们必须使用一个。你会建议他们使用别人的吗?当然,如果你信任你的产品,你会自己使用它。
- 左边的“事件”是一个政策漏洞,而不是软件缺陷,他们显然没有预料到或者认为这是严重的问题,直到发生严重事件。因此,为什么这是不使用npm的原因。
- 在成千上万的托管软件包中,它不可能发生得太频繁,或者很久以前就会被修复。这相当令人印象深刻。
- 修复只是更新缓存策略非常简单,所以对npm不构成威胁。
- 其他包管理工具有类似的问题(或更糟糕的)。例如,由于缺乏资金,整个maven资料库都处于脱机状态。这不太可能发生在npm上,因为它是集中式的,并且有许多大型利益相关者对确保它保持稳定感兴趣。
- 这些事件使生态系统更加稳定和成熟。
- 就像所有的故事一样,这一切都会很快消失。
_“这不太可能发生在npm上。”_为什么? npm不是分散式的,服务器还没有免费。 –
正是因为这个原因。 npm是集中式的。包括谷歌,微软,苹果在内的很多公司都在npm上有软件,因此如果资金耗尽,只有一个回购协议可以拯救。 Maven被分散,任何一个回购都会失败并引发混乱。 – chriskelly
有趣,这是有道理的:) –
- 1. 为什么firefox是用C++和javascript UI编写的?
- 2. mongodb shell是用JavaScript编写的。为什么UNIX二进制呢?
- 3. 什么是编写JavaScript在WordPress
- 4. 为什么要编写模块化JavaScript?
- 5. Xcode是用什么语言编写的?
- 6. 什么是用DOS编写的程序?
- 7. 这是什么JavaScript简写?
- 8. 为什么编译器是用C/C++编写的,而不是使用CoffeeScript(JavaScript,Node JS)?
- 9. 〜/ .npm目录是什么?
- 10. 什么是npm我bootstrap @ next?
- 11. 什么是npm字体?
- 12. NPM说UNMET_PEER_DEPENDENCY。为什么?
- 13. 在JavaScript中编写HTML比document.write更好的方法是什么?
- 14. 编写和组织javascript插件的最佳做法是什么?
- 15. 由Windows编写的iTunes是什么?
- 16. 编写奎因的“诀窍”是什么?
- 17. 为此编写javascript正则表达式的好方法是什么?
- 18. 写什么是最有用的东西写日志javascript
- 19. 为什么一些OpenCL示例用C++编写而不是C?
- 20. 现代Unix工具是用什么编程语言编写的?
- 21. 用于编写RFC文本文件的编辑器是什么?
- 22. dart编译javascript的限制是什么?
- 23. 为什么我不能在Javascript中编写[1,2,3] .reduce(Math.max)?
- 24. “npm -d install”中的“-d”是什么?
- 25. npm模块的类型是什么?
- 26. npm包存储库的url是什么?
- 27. npm链接的Python模拟是什么?
- 28. NuGet中的“npm install”是什么?
- 29. Facebook的Flux是用什么语言编写的,它是如何转化为JavaScript的?
- 30. 什么是编写测试用例的功能是在循环
因为“为什么不呢?” –
另一方面,'node'使用Python和C++运行,所以它不像整个节点堆栈只用JS写入 – Quill