8000 如何挑选高质量的 Node.js 模块 · Issue #19 · atian25/blog · GitHub
[go: up one dir, main page]

Skip to content

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

Open

Description

@atian25

1. 前言

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

modulecounts

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.

npms.io

最早了解到该站点,是听小右在微博说的。


选模块就像选对象,下面我们来看看非诚勿扰选优,呸呸呸,是来看官方的评估标准:

default

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 参考资料

3. 写在最后

  • node-modules 是国内很多 Node.js 大神维护的 Group,里面的模块都经受住大规模的应用考虑,标准化和质量都不错,欢迎关注。
  • 本来想写一个 npms 的 CLI 的,结果被人抢先了,npm-compare ,有兴趣的可以玩玩,PS:@fengmk2 可以考虑集成到为 cnpm compare。
  • 对于高质量的模块,我们推荐通过 ^ 引入,而不是 ~ 或写死版本,像 eggjs 的依赖都是 ^ 的。想知道为何?开问题邀请 @dead-horse 回答吧。

Activity

  1. avilang commented on Jun 1, 2017

    @avilang

    对于高质量的模块,我们推荐通过 ^ 引入,而不是 ~ 或写死版本,像 eggjs 的依赖都是 ^ 的。想知道为何?开问题邀请 @dead-horse 回答吧。能回答下么,想学习下

  2. 17biubiu commented on Jun 6, 2017

    @17biubiu

    前端开发,新入手后端后发,有没有eggjs比较好的案例推荐学习下

  3. MickeyMouse-lh commented on May 5, 2018

    @MickeyMouse-lh

    最近老大让我总结egg的最佳实践,我有点儿不知道从哪下手的感觉,请大佬指点!

  4. atian25 commented on May 5, 2018

    @atian25
    OwnerAuthor
  5. atian25 commented on May 5, 2018

    @atian25
    OwnerAuthor

    @MickeyMouse-lh 这个话题有点大。。。不同阶段,不同受众的最佳实践不一样

  6. yunhungo commented on Jun 5, 2018

    @yunhungo

    很赞,收藏了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0