前言
在开发 npm 包时,我们常常需要了解该包的贡献者列表。如果你使用 git 进行版本控制,那么可以通过 git 命令获取贡献者列表。不过,如果能够将其封装成 npm 包,那么可以方便地在项目中使用。contributors-from-git
就是一个获取贡献者列表的 npm 包。
安装
npm install contributors-from-git
使用
Node.js
const contributorsFromGit = require('contributors-from-git'); (async () => { const contributors = await contributorsFromGit(); console.log(contributors); })();
TypeScript
import contributorsFromGit from 'contributors-from-git'; (async () => { const contributors = await contributorsFromGit(); console.log(contributors); })();
指南
实现过程
实现 contributors-from-git
的关键在于获取 git 提交记录并解析出贡献者列表。可以通过 shell 命令获取所有 git 提交记录。
git log --pretty="%an|%ae" | awk {'arr[$0]=1} END {for (var x in arr) {print x;} }'
该命令会输出所有提交记录的作者姓名和邮箱,使用 |
分隔,每行一个提交记录。使用 awk
工具去重并输出贡献者列表。
awk {'arr[$0]=1} END { for (var x in arr) { print x; } }'
在 Node.js 中执行 shell 命令可以使用 child_process
模块的 exec
或 spawn
方法。具体实现可以参考 contributors-from-git
的源码。
注意事项
contributors-from-git
只能获取 git 提交记录的作者来生成贡献者列表,不包括其他贡献者。- 如果你的项目中使用了 GitHub Actions,那么可以生成贡献者列表同时自动更新到 README.md 文件中,具体实现可以参考该项目的 .github/workflows/update-contributors.yml 文件。
示例代码
以下代码演示了如何使用 contributors-from-git
获取 npm 包的贡献者列表,并输出。
const contributorsFromGit = require('contributors-from-git'); (async () => { const contributors = await contributorsFromGit(); console.log(contributors); })();
输出结果类似于以下内容:
[ { name: 'Leo Zhu', email: 'aim_leo@163.com' }, { name: 'Leo Zhu', email: 'aim.leo@qq.com' }, { name: 'Leo Zhu', email: 'leozhu1995@gmail.com' }, { name: 'Leo Zhu', email: 'leozhu1995@hotmail.com' } ]
总结
contributors-from-git
是一个方便获取贡献者列表的 npm 包。通过封装 shell 命令获取 git 提交记录,并解析出贡献者列表,可以简化项目开发中的人力成本,并提高开发效率。在实际项目开发中,你可以使用该包来快速了解项目的贡献者列表,同时也可以参考其源码实现类似功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc6ffb5cbfe1ea0612286