Shields 徽章生成

拼好参数的 shields.io 徽章地址,连同 Markdown、RST、HTML 片段一起给你,粘到 README 就能用。

静态徽章的文字是你自己填死的,走 /static/v1;动态徽章由 shields 去第三方接口取数,例如 /github/stars/vuejs/core 会显示仓库的 star 数,会随数据变化。

用之前该知道的几件事

徽章图是 shields.io 实时生成的,所以每次打开 README 都会去它那儿取图。shields 对第三方接口的结果有缓存,默认由服务端决定时长,可以用 cacheSeconds 覆盖:设小了会给 GitHub 等上游增加压力,也可能被限流;设大了数据更新会慢。个人项目的 README 一般保持默认就行,只有对实时性有要求才去调。

在内网、离线环境或者访问不到 shields.io 的网络里,徽章就是一张破图。这不是配置写错了,而是这类徽章本质上依赖外部服务,和「本地工具」不一样。对可用性要求高的项目可以考虑自建 shields 实例,或者干脆用静态的 SVG 图片替掉徽章。

动态徽章能不能显示,取决于上游数据本身是否公开、以及 shields 有没有对应的接口适配。私有仓库的 star 数、内部 CI 的状态,shields 读不到,除非按它的文档配好访问令牌(这时候令牌在 shields 那边,不在你的页面里)。路径写错时徽章会显示 invalid 之类的提示,说明参数没拼对,而不是数据是 0。

还有一点容易被忽略:徽章会暴露访问者的 IP 和 Referer 给 shields.io 以及它请求的上游服务。对内部文档或者含敏感信息的页面,最好别插第三方徽章;本站的预览也特意做成手动触发,默认状态下一个外部请求都不会发。