统计github 发行版数量的小工具,一键生成下载数量徽标

:rocket: 分享一个我写的开源工具:GitHub Release 下载量徽章生成器

大家好!今天给大家分享一个我最近开发的小工具,专门用来生成 GitHub 项目 Release 下载量的徽章。

:bullseye: 项目背景

你们有没有遇到过这种情况:开源项目想要在 README 中展示下载量,但 GitHub 官方并没有提供相关的徽章服务?shields.io 也没有直接支持 GitHub Release 下载量统计。于是我就撸了一个!

:sparkles: 功能亮点

  • :high_voltage: 超快响应:基于 Cloudflare Edge 网络,全球加速
  • :bar_chart: 灵活统计:支持统计所有 Release 总下载量,也支持查看特定版本
  • :artist_palette: 自定义样式:支持自定义颜色、标签文本、徽章样式
  • :1234: 智能格式化:自动将大数字格式化为 K/M 单位
  • :rocket: 零配置使用:开箱即用,无需注册和配置

:hammer_and_wrench: 技术栈

  • 运行时:Cloudflare Workers(Edge Computing)
  • API:GitHub REST API v3
  • SVG 生成:纯 JavaScript 动态生成 shields.io 风格徽章
  • 缓存策略:成功响应缓存 1 小时,错误响应缓存 5 分钟

:circus_tent: Demo 实例

我部署了一个公共实例:https://gh-down-badges.linkof.link

直接试试看:

Downloads

# 所有版本总下载量
https://gh-down-badges.linkof.link/用户名/仓库名

# 特定版本下载量
https://gh-down-badges.linkof.link/用户名/仓库名/v1.0.0

# 自定义颜色和标签
https://gh-down-badges.linkof.link/用户名/仓库名?color=blue&label=下载量

:light_bulb: 使用场景

在 README 中展示总下载量

![Downloads](https://gh-down-badges.linkof.link/your-username/your-repo)

展示最新版本下载量

![Latest Downloads](https://gh-down-badges.linkof.link/your-username/your-repo/v2.1.0)

自定义样式

![总下载量](https://gh-down-badges.linkof.link/your-username/your-repo?color=ff69b4&label=总下载量&style=flat-square)

:wrench: 技术细节

API 设计

Worker 通过解析 URL 路径来确定查询参数:

  • /owner/repo - 查询所有 Release 总下载量
  • /owner/repo/tag - 查询特定 tag 的下载量

智能颜色策略

// 根据下载量自动选择颜色
if (totalDownloads < 100) {
    color = '#97ca00'; // 浅绿
} else if (totalDownloads < 1000) {
    color = '#4c1'; // 绿色
} else if (totalDownloads < 10000) {
    color = '#007ec6'; // 蓝色
} else {
    color = '#e05d44'; // 红色(高下载量)
}

SVG 生成

使用纯 JavaScript 生成符合 shields.io 规范的 SVG 徽章,支持多种样式:

  • flat - 默认平面风格
  • flat-square - 方形风格
  • plastic - 立体风格

:rocket: 部署指南

方式一:直接使用我的公共实例

https://gh-down-badges.linkof.link/your-username/your-repo

方式二:自己部署

# 克隆仓库
git clone https://github.com/your-username/github-release-download-badges

# 安装依赖
npm install

# 登录 Cloudflare
npx wrangler login

# 部署
npm run deploy

:artist_palette: 高级用法

支持的颜色

  • 预定义颜色red, green, blue, yellow, orange, purple, pink, gray
  • 语义化颜色success, important, critical, informational, inactive
  • 十六进制ff69b4, #ff69b4, f6b

查询参数

  • color - 自定义颜色
  • label - 自定义标签文本
  • style - 徽章样式

:chart_increasing: 性能优化

  1. Edge 缓存:利用 Cloudflare 全球 CDN
  2. 智能缓存:成功响应缓存 1 小时,减少 API 调用
  3. 错误处理:优雅处理 404、403 等错误情况
  4. CORS 支持:可在任何网站中使用

:handshake: 开源贡献

项目完全开源,欢迎大家:

  • :star: Star 支持一下
  • :bug: 提交 Issue 反馈问题
  • :wrench: 提交 PR 贡献代码
  • :light_bulb: 提出新功能建议

GitHub 仓库https://github.com/bestk/github-release-download-badges

:tada: 最后

这个工具解决了我在开源项目中的一个小痛点,希望对大家也有帮助!如果你觉得有用,不妨在自己的项目中试试看 :blush:

有任何问题或建议,欢迎在评论区讨论!


标签Cloudflare #Workers GitHub #开源 徽章 #SVG #Edge-Computing

12 个赞

感谢大佬

2 个赞

感谢佬先mark一下

感谢大佬 准备试试

1 个赞

佬,这个真不错,一直想看看有多少下载,马上更新我的readme

已经更新了,总计有2.6k,满足了 :tieba_003:

多谢启发,我魔改了一个带前端的

类似

一样可前端自动生成

Downloads

试一下看看我的项目数量

999?
怎么感觉不太对啊

试试

看看?我修复了一些他的BUG

谢谢分享

康康大佬的项目

在我帖子里,你自己看吧,你才是大佬呀:smiling_face_with_tear:

这个图标使用,国内有时候国内不稳定,可以直接获取到后,下载图标,然后用CDN来进行使用比较好

我怎么记得在这之前我就看到过有统计这个的badge呢

感谢佬友提供的小工具

我一直在用 shields.io

这里贴一下我的项目: