日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GitHub 仓库按大小排序

發布時間:2025/4/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GitHub 仓库按大小排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

起因

??對于代碼初學者來說,GitHub 是一個很好的網站。在這里,他們可以學習如何更好地寫代碼并提高代碼能力,學習編碼規范,各種框架......
??然而對于像我一下的初學者來講,有時候不知道要如何從 GitHub 的優秀項目中學習、要從何開始閱讀源碼。
??所以我想到了一個方法: 將自己 star 過的所有優秀項目按倉庫大小( 代碼量 )進行排序,從代碼量小的項目開始研究,逐步提升代碼能力。

準備

想好了項目的目的,列出以下幾種需要用到的技術:

  • JavaScript
  • NodeJs
  • GitHub API

并找到了一個極小的 GitHub API 封裝工具: gh.js。

開始

安裝項目依賴包

# 初始化項目 npm init npm install gh.js # 封裝過的 GitHub API npm install chalk # 美化終端命令行工具的字體顏色 npm install ora # 優雅的終端加載條 復制代碼

創建項目入口 index.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 = tokentoken = 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

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')) }) 復制代碼

運行結果如下:

? 哈哈,成功得到了我們想要的結果。

封裝成命令行工具

創建 bin/sort-starred-by-size:

const ora = require('ora') const chalk = require('chalk') const spinner = ora('Sorting...') spinner.start()if (!process.argv[2]) {spinner.stop()console.log(chalk.green('sort-starred-by-size ~ ' + require('../package').version))console.log(chalk.gray('Sort your personal starred repos by size in command line.'))console.log(chalk.cyan(' $ ') + 'sort-starred-by-size torvalds')console.log(chalk.cyan(' $ ') + 'sort-starred-by-size ZYSzys')return } else {const username = process.argv.slice(2).join('')const sort = require('..')sort(username, (err, repos) => {spinner.stop()console.log(err || repos.map(function(c) {return `${c.full_name} => ` + chalk.red(`${c.size}`) + `kb`}).join("\n"))}) } 復制代碼

再測試一下:

發布到 npm

在 package.json 中添加 bin 字段:

"bin": {"sort-starred-by-size": "./bin/sort-starred-by-size"}, 復制代碼

發布到 npmjs.com:

npm publish 復制代碼

以后通過 npm install -g sort-github-stars-size 安裝本模塊后,就能通過 sort-starred-by-size username 來對已 star 的 GitHub倉庫進行按代碼量從小到大排序了。

項目完整地址: sort-github-stars-size

歡迎 PRissue 來提供建議(目前性能亟待優化)。

總結

以上是生活随笔為你收集整理的GitHub 仓库按大小排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。