3

npm 是 2009 年开始的一个 javascript 模块管理工具,也是最流行的代码共享平台之一。2013 年 npm 的模块总数是 4 万,2014 年就升到 8 万以上,超过所有其他同类平台。


(数据来源: http://www.modulecounts.com

截止现在 npm 的模块总数量是 31 万个,6 月份的总下载量超过 49 亿(因为有些情况下 npm 安装模块从缓存读取时不会被算入下载统计,所以总安装量远远超过这个数)。

今年 4 月 npm 官方(http://blog.npmjs.org/post/143451680695/how-many-npm-users-are-there )发了一份统计,截止 4 月全球估计有 4 百万用户使用 npm,并且这个数字每年会翻一倍。

作为一个 npm 的重度依赖者,我近 2 年的十几个项目都在使用 npm,我还把自己的多个模块发布到 npm,并且推荐朋友使用。

最近一位朋友跟我吐槽 npm 上很多模块不严谨,都没有测试过,很多坑。确实如此,不仅代码质量有问题,还有很多模块是重复的,比如在 npm.com 搜索 requestAnimationFrame 的 polyfill 可以看到一整页 20 多个功能重复的模块。

这些问题只能用“林子大了什么鸟都有”来解释,npm 现在就像一个自然生态,它靠最简单的规则让原子化的个体形成进化群体,依托群体的”快速应用->大量反馈->快速迭代发布->快速应用“模式,让整个 npm 生态快速迭代进化起来。

目前在 npm 上发布模块的人数超过了 8 万,这些人发布了超过 31 万个模块,其中有 3 万模块是被用户大量下载使用的。我们来简单筛选一下有多少合格的模块(数据来自https://unpm.nodesource.com 网站):

按照所有模块为 100% 来算
减去没 readme 文件的模块,剩下 89.0%
再减去缺少 license 的模块,剩下 58.4%
再减去没配置对应 Github 仓库地址的模块,剩下 53.7%
再减去没测试代码的模块,剩下 42.3%

所以这么多模块中只有 42.3% 即 1 万多是有各种必备配置的“合格”的模块。但剩下更多的是不“合格”的有些连 readme 都没有的模块,这些 npm 居然也允许发布。

其实,npm 能有如此大的活力也是得益于允许不完美的模块存在着,它给发布者很大的权利,只需很简单的步骤就可以发布模块,没人审核你的代码。就这么简单的规则,造就每天 440 多个模块的发布量。

截止目前 npm 只有 25 个员工,他们没去设计完备的发布措施让模块“合格”的上线。相反,他们“放任”大量不完美的模块发布出来让用户自己甄别筛选,用户之间形成的进化群体在”快速应用->大量反馈->快速迭代发布->快速应用“的模式下,模块趋于完善。

我经常看到有雷同的模块其中一个作者自认为不如另一个模块做得好,建议大家去用另一个。而那些现在依然“有坑”的模块就是提示你它刚刚开始进化,你可以参与它的进化群体,它会与你一同完善。

从更大的视角看,npm 可以用大数据分析看到整个开发者生态的状况。

比如通过 http://npmcharts.com 这张图可以看出 2016 年 sass 的用户数量超过了 less。

类似的工具可以分析出未来热门的领域,可以看出不同技术应用方向的进化程度,可以看到每个方向人群的技术水平进而预测进化周期。从几十万茫茫模块中几十亿下载量中,它能计算出最佳选择,为每种应用场景提供稳定优质的模块组合。这简直就是编程行业的智能时代,而对开发者来说,这样的时代也许并不需要个体很长期复杂的积累,编写出可靠的应用程序会是一件轻松简单的事情。

本文同步发布在我博客:http://zaishanda.com/post/%E6%AC%A2%E8%BF%8E%E6%9D%A5%E5%88%B0%20npm%20%E6%99%BA%E6%85%A7%E6%98%9F%E7%90%83


肖建锋
550 声望14 粉丝

全栈,iTerm2 oh-my-zsh