如何挑选高质量的 Node.js 模块

如何挑选高质量的 Node.js 模块

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

原文:github.com/atian25/blog/issues/19

https://pic1.zhimg.com/50/v2-bad970913648ba50b7533358148e2d60_hd.jpg

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.

翻译: npms.io -它代表了NPM搜索使JavaScript社区提供一个更好的开放节点包源搜索。

https://pic2.zhimg.com/50/v2-d5376b3a0b09ef9ca6207cddc6814aed_hd.jpg

选模块就像选对象,是来看官方的评估标准:

质量 Quality

如何挑选高质量的 Node.js 模块?
如何挑选高质量的 Node.js 模块?
天猪(刘勇)
天猪(刘勇)
9 个月前

  1. 前言

    如图,截止到 2017 年 3 月, Node.js 模块的数量已经超过 43 万,难免会良莠不齐。
    那我们如何高效的从中找到高质量的模块呢?请听下文分解。
    原文:github.com/atian25/blog/issues/19

  1. 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

第一个维度是「质量」,毕竟这是一个看脸的时代,第一印象很重要。相关因子就在源码中,故计算起来相对容易些,如:

  • 是否有 README,LICENSE,.gitignore 等文件。
  • 是否稳定版本(按 semver 规则为 >=1.0.0 ),是否声明了 deprecated
  • 是否包含测试?覆盖率如何?测试是否通过?
  • 是否包含过期的依赖?是否有安全隐患?
  • 有没有官方站点?有没有徽章(badges)?
  • 是否使用了代码风格检查(Lint)?
  • 代码中的 TODO/FIXME 多不多?

维护状况 Maintenance

第二个维度是「维护状况」,考察的是一个模块的家况,如果我们希望跟它进一步交往,当然需要了解到这个模块的活跃程度,健康度,是否被遗弃了?

  • issue open/total %
  • issue 被处理的效率
  • 最近一个 commit 的时间
  • commit 的频率
  • 发布的频率

知名度 Popularity

第三个维度是「知名度」

  • GitHub Star 数
  • GitHub Fork 数 (说个题外话,Fork 增长 > Star 说明什么?)
  • GitHub Watch 数 (鄙视下那些经常在 GitHub blog 下乱发消息的人)
  • 贡献者数量
  • 被其他模块依赖的数量
  • 下载安装次数
  • 下载增长率

个人魅力 Personalities

最后一个维度是「个人魅力」

  • 当两个库差不多时,一般选择大神的库,如 TJ 、substack、fengmk2、dead-horse 等。
  • 不过 npms 目前并没有把该属性纳入计算。

end

  • github.com/node-modules 是国内很多 Node.js 大神维护的 Group,里面的模块都经受住大规模的应用考虑,标准化和质量都不错,欢迎关注。
  • 本来想写一个 npms 的 CLI 的,结果被人抢先了,npm-compare ,有兴趣的可以玩玩 。
  • 对于高质量的模块,我们推荐通过 ^ 引入,而不是 ~ 或写死版本,像 eggjs 的依赖都是 ^ 的。
  • 作为一个类库开发者,通过我们的 egg-init –type=empty 可以快速生成符合上面标准的项目骨架,包含 lint 等相关内容,有兴趣的同学可以看下eggjs/egg-boilerplate-empty 。

转载

转载 : https://zhuanlan.zhihu.com/p/25686563

坚持原创技术分享,您的支持将鼓励我继续创作!
//