s,进一步扩展了这款简洁明了语言的使用范围。
而npm就是一款基于nodejs的包管理器,开发者利用它可以很方便地借用其他人贡献的开源代码,快速做出属于自己的网络应用。
李嘉明只是简单搜了一下,就立即明白npm果然是粗大事了。
这种软件包管理器是用来管理开源软件的,开发者可以将自己觉得有用的软件或模块组件发布到这里,允许其他开发者按需下载组装成属于他的软件,然后再次发布。
由于相关组件的查找、下载、组装、升级等工作都有pm软件高效完成,大家也就习惯了需要某个功能时优先使用现成软件包,而不是自己动手码一个的习惯。特别是那些简单、常用的功能模块,因为其简单常用往往拥有非常多的引用下载数,热门组件的日下载数更是可以达到几十万甚至之多。
也就是说只要开发者把这个组件更改甚至删除,就可能影响到其他几十万个次的软件运行。
更糟糕的是,这种关系还可以传递:a软件依赖b、c包里面的内容,bc包又需要def包,导致a软件间接依赖def的情况。也就是说看似风马牛不相及的def软件包中任意一个出问题,a软件的运行就有可能受影响,如果a软件的开发者刚好偷了懒,为其设置了运行前检查更新的功能,那他100%要杯具。
也不是没人看出其中蕴含的问题和风险,但是谁都没当一回事儿,至少npm的运营公司和使用者都没理会这个问题。然后这个问题就在今天爆发了出来,以人为引发的方式。
有位开发者windgirl删除了她名下全部57个软件包,导致依赖他们的1468个包报错,进一步引起五位数软件包的报错,受影响的软件和网络应用不下5万……
虽然npm方面已经紧急恢复了被删除的软件包,堵住源头使得报错链条被打断,但是受此惊吓,使用这个工具的开发者们可不能当啥事都没有发生,要么修改软件代码断开这种依赖
-->>(第5/6页)(本章未完,请点击下一页继续阅读)