Node.js项目的NPM是世界上最大的包管理器,登记了超过35万软件包,是排名第二的ApacheMaven的两倍以上。用户在四周时间里从NPM安装了180亿个软件包,但记录的下载次数只有60亿次,原因是三分之二的安装来自缓存。每周大约有160名开发者首次在NPM发表软件包,Node.js的AshleyWilliams预测2017年这一数字将达到平均每周200人。

http://static.cnbetacdn.com/article/2017/0115/df1c8b3611fa62e.png

NPM包管理器中有大量广泛使用但只有几行代码的模块,去年3月,一名开发者撤回了他的软件,结果导致很多依赖这几行代码的重量级项目出现问题

一位NPM模块的开发者撤回了他的代码,导致了多个重量级项目(如React和Babel)出现问题。然而对软件代码本身的分析却发现,这个被许多项目使用的模块就包含几行代码,进一步研究发现,NPM包管理器中有大量类似的被广泛使用但只有几行代码的模块。有人为此发出疑问:程序员连代码都不会写了吗?举例来说,一个叫isArray的软件包一天的下载量有88万,2016年2月有1800万次下载量,它本身就一行代码。NPM生态系统中的许多开发者看起来宁愿复用其他人写好的代码而不是自己写。这种做法存在严重的安全隐患,因为一个被广泛使用的软件包存在bug,你的代码也会受到影响,而你却无法自己去修正。

为了阻止类似的问题再次发生,NPM制定新的政策,只允许发表24小时的新项目撤回,而如果开发者想要放弃一个项目他们可以将其标记为“不再维护”,但软件包仍然会留在仓库内。

24 收藏


直接登录
最新评论
  • 十二页 搬砖工 01/16

    npm的包跟maven的不能算是一个完全一样的东西吧。我个人觉得就是maven的包最大的缺点就是是你只想用一个类,却引入了其他一堆没用的类。npm看上去是解决了这个不过问题也很大,那就是这东西太随意了,代码质量没得保证。maven公网中央仓库的包多数是大公司发布的,基本的质量怎么说还是有保证的。npm上面随便发布的东西太乱了,就算在我自己公司的maven私服上面我也不会这么随意上传个几行代码的东西。

    十年前的Java,五年前的android/ios,去年开始的js,培训机构已经开始出动了,我个人预感下一个各种看不起的就是js。js火沾了极大的开源的光,但是混乱的开源也极大程度阻碍了js在生产环境担当起一个主力。下面的程序员随便上github找个开源就说好,其实他只是会用,别人写的他还不一定大半都看得懂,有什么bug还联系不上作者。

    maven能成为Java服务端包管理的标准是因为maven质量高可靠,觉得js开源还是得有更多的大公司牵头负责下,起码像上面node的isArray这种,要么搞成自带的api,要么像apache common/guava common等等一样打包在一起,成为事实上通用的。开源虽然好,但是我还是相信那个,10%的开源代码被80的实际代码用到,90%的开源你听都没听过,不把这10%管理好,开源除了看,还真不敢用。

  • 哎,感觉NPM的新政策还是只能缓解一时的问题啊,代码的重用与开源不该成为程序员懒惰的借口。一旦依赖就已经把自己降级了,也把自己提升的空间缩小了。

推荐关注