blog
blog copied to clipboard
如何挑选高质量的 Node.js 模块
1. 前言
如图,截止到 2017 年 3 月, Node.js 模块的数量已经超过 43万,这么多模块难免会良莠不齐, 那我们如何高效的从中找到高质量的模块呢?请听下文分解。

2. npms.io
npms.io - which stands for npm search - was built to empower the JavaScript community by providing a better and open source search for node packages.

最早了解到该站点,是听小右在微博说的。
选模块就像选对象,下面我们来看看非诚勿扰选优,呸呸呸,是来看官方的评估标准:

2.1 质量 Quality
第一个维度是「质量」,毕竟这是一个看脸的时代,第一印象很重要。
相关的因子就在源码中,故计算起来相对容易些,如:
- 是否有 REAME,LICENSE,.gitignore 等文件。
- 是否是稳定版本(按 semver 规则为 >= 1.0.0 ),是否声明了
deprecated? - 是否包含测试?覆盖率如何?测试是否通过?
- 是否包含过期的依赖?是否有安全隐患?
- 有没有官方站点?有没有徽章(badge) ?
- 是否使用了代码风格检查(lint) ?
- 代码中的
TODO/FIXME多不多?
2.2 维护状况 Maintenance
第二个维度是「维护状况」,考察的是一个模块的家况,如果我们希望跟它进一步交往,当然需要了解到这个模块的活跃程度,健康度,是否被遗弃了?
- issue 的比率
- issue 被处理的效率
- 最近一个 commit 的时间
- commit 的频率
- 发布的频率
2.3 知名度 Popularity
第三个维度是「知名度」
- GitHub Star 数
- GitHub Fork 数 (说个题外话,Fork > Star 说明什么?)
- GitHub Watch 数 (鄙视下那些经常在 GitHub blog 下乱发消息的人)
- 贡献者数量
- 被其他模块依赖的数量
- 下载安装次数
- 下载增长率
2.4 个人魅力 Personalities
最后一个维度是「个人魅力」
- 当两个库差不多的情况下,一般选择大神的库,如 tj 、substack、fengmk2。
- 不过 npms 目前并没有把该属性纳入计算。
2.5 参考资料
- https://npms.io/about
- architecture
3. 写在最后
- node-modules 是国内很多 Node.js 大神维护的 Group,里面的模块都经受住大规模的应用考虑,标准化和质量都不错,欢迎关注。
- 本来想写一个 npms 的 CLI 的,结果被人抢先了,npm-compare ,有兴趣的可以玩玩,PS:@fengmk2 可以考虑集成到为
cnpm compare。 - 对于高质量的模块,我们推荐通过 ^ 引入,而不是 ~ 或写死版本,像 eggjs 的依赖都是 ^ 的。想知道为何?开问题邀请 @dead-horse 回答吧。
对于高质量的模块,我们推荐通过 ^ 引入,而不是 ~ 或写死版本,像 eggjs 的依赖都是 ^ 的。想知道为何?开问题邀请 @dead-horse 回答吧。能回答下么,想学习下
@avilang
- https://zhuanlan.zhihu.com/p/22934066
- https://www.zhihu.com/question/56939975/answer/154679454
前端开发,新入手后端后发,有没有eggjs比较好的案例推荐学习下
最近老大让我总结egg的最佳实践,我有点儿不知道从哪下手的感觉,请大佬指点!
@proshuai
- https://github.com/cnodejs/egg-cnode
- https://github.com/eggjs/awesome-egg
@MickeyMouse-lh 这个话题有点大。。。不同阶段,不同受众的最佳实践不一样
很赞,收藏了。