每当我在写 node 程序的时候,都会遇到需要使用某些已经成熟的功能包,但是并不知道该功能包在 npm 里面叫什么,或者哪个好的尴尬境地。

目前有一些网站在做这方面的索引,譬如 node-modules。但是这类网站基本上是以该包在 GitHub 上的 star 数决定排名。

我感觉这种排名方式并不客观:

  • 首先并不一定每个包都在 GitHub 上托管仓库,有些包会在 Bitbucket 上甚至并不会托管源码在代码托管系统。
  • 其次对于越小的功能包,star 数多并不能代表该包有多流行。譬如最简单的 mkdirp 或者 rimraf 这种包,只要牵涉到文件的 node 程序一般都会使用他们,然而它们的 GitHub 仓库的 star 数并不能如实反映这种情况。

我认为相对客观的方式是使用它们被依赖的次数进行择优,即参考 most depended-upon packages 这个页面的顺序进行 node 包的择优选择。

基于此我写了个 node 命令行工具 wpkg,可以使用该工具自动爬取这个页面并筛选出前 n 个含有指定关键词的包名。安装方法与一般的 node 命令行工具别无二致:

$ npm install -g wpkg
$ wpkg env

更高级的用法请使用 wpkg --help 自行查询。