Shields 徽章生成
拼好参数的 shields.io 徽章地址,连同 Markdown、RST、HTML 片段一起给你,粘到 README 就能用。
静态徽章的文字是你自己填死的,走 /static/v1;动态徽章由 shields 去第三方接口取数,例如 /github/stars/vuejs/core 会显示仓库的 star 数,会随数据变化。
地址
https://img.shields.io/static/v1?label=build&message=passing&color=brightgreen&style=flat&cacheSeconds=3600
语言下拉里的命名色和 hex 都会被原样带进地址;label 和 message 里的空格、连字符、下划线会按 shields 的规则自动转义,不用自己处理。
预览
预览是 shields.io 上的一张远程图片:点了「加载预览」之后,你的浏览器才会向 img.shields.io 发一次请求,并把访问 IP 暴露给它,页面其他部分不会发任何外部请求。
还没加载预览。
可粘贴片段
Markdown 和 RST 都是图片引用,alt 用的是标签文字;如果 shields.io 挂了或公司网络访问不到,这些片段会显示成破图,正文不会受影响。
用之前该知道的几件事
徽章图是 shields.io 实时生成的,所以每次打开 README 都会去它那儿取图。shields 对第三方接口的结果有缓存,默认由服务端决定时长,可以用 cacheSeconds 覆盖:设小了会给 GitHub 等上游增加压力,也可能被限流;设大了数据更新会慢。个人项目的 README 一般保持默认就行,只有对实时性有要求才去调。
在内网、离线环境或者访问不到 shields.io 的网络里,徽章就是一张破图。这不是配置写错了,而是这类徽章本质上依赖外部服务,和「本地工具」不一样。对可用性要求高的项目可以考虑自建 shields 实例,或者干脆用静态的 SVG 图片替掉徽章。
动态徽章能不能显示,取决于上游数据本身是否公开、以及 shields 有没有对应的接口适配。私有仓库的 star 数、内部 CI 的状态,shields 读不到,除非按它的文档配好访问令牌(这时候令牌在 shields 那边,不在你的页面里)。路径写错时徽章会显示 invalid 之类的提示,说明参数没拼对,而不是数据是 0。
还有一点容易被忽略:徽章会暴露访问者的 IP 和 Referer 给 shields.io 以及它请求的上游服务。对内部文档或者含敏感信息的页面,最好别插第三方徽章;本站的预览也特意做成手动触发,默认状态下一个外部请求都不会发。