概述
## 起因
  对于代码初学者来说,`GitHub` 是一个很好的网站。在这里,他们可以学习如何更好地写代码并提高代码能力,学习编码规范,各种框架......
  然而对于像我一下的初学者来讲,有时候不知道要如何从 `GitHub` 的优秀项目中学习、要从何开始阅读源码。
  所以我想到了一个方法: **将自己 `star` 过的所有优秀项目按仓库大小(** **代码量** **)进行排序**,从代码量小的项目开始研究,逐步提升代码能力。
<!--more-->
## 准备
想好了项目的目的,列出以下几种需要用到的技术:
* JavaScript
* NodeJs
* [GitHub API](https://developer.github.com/v3/)
并找到了一个极小的 `GitHub API` 封装工具: [gh.js](https://github.com/IonicaBizau/gh.js)。
## 开始
### 安装项目依赖包
```sh
# 初始化项目
npm init
npm install gh.js # 封装过的 GitHub API
npm install chalk # 美化终端命令行工具的字体颜色
npm install ora # 优雅的终端加载条
```
### 创建项目入口 `index.js`
```js
const GitHub = require('gh.js')
/**
* sortByStarredSize
* Sort your personal starred repos by size.
*
* @name sortByStarredSize
* @function
* @param {String} username The GitHub username.
* @param {String} token An optional access token.
* @param {Function} callback The callback function.
* @return {gh.js} The `gh.js` instance.
*/
function sortByStarredSize (username, token, callback) {
if (typeof token === 'function') {
callback = token
token = undefined
}
const gh = new GitHub({ token: token })
gh.get(`users/${username}/starred`, { all: true }, (err, repos) => {
if (err) { return callback(err) }
repos.sort(function (a, b) {
return a.size > b.size ? 1 : -1
})
callback(null, repos)
})
return gh
}
module.exports = sortByStarredSize
```
### 创建测试样例 `example.js`
```js
const sortGhStarredSize = require('.')
// 以大神 Linus Torvalds 的GitHub用户名torvalds为例
const username = 'torvalds'
sortGhStarredSize(username, (err, repos) => {
console.log(err || repos.map(function(c) {
return `${c.full_name} => ${c.size} kb`
}).join('n'))
})
```
运行结果如下:
最后
以上就是英勇红牛为你收集整理的GitHub 仓库按大小排序的全部内容,希望文章能够帮你解决GitHub 仓库按大小排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复