如何给开源项目caniuse贡献数据:新增一个浏览器兼容性feature的完整教程与PR准入标准
【免费下载链接】caniuseRaw browser/feature support data from caniuse.com项目地址: https://gitcode.com/gh_mirrors/ca/caniuse
caniuse开源项目(仓库名caniuse-db)为 caniuse.com 网站提供原始浏览器/feature 支持数据,每个 JSON 文件就是一张浏览器兼容性表格。本文将带你从零开始贡献数据:如何给 caniuse 新增一个浏览器兼容性feature文件,如何通过本地校验,并看懂官方的PR 准入标准,让贡献一次通过。
一、先看懂仓库结构:兼容性数据存放在哪里
仓库结构非常精简,你要操作的数据基本集中在features-json目录:
| 路径 | 作用 |
|---|---|
| features-json/ | 每个 feature 一个 JSON,数据贡献的核心区域 |
| sample-data.json | 官方模板,新增 feature 时照抄它 |
| fulldata-json/data-2.0.json | 全量汇总数据,供其他项目直接引用 |
| region-usage-json/ | 按地区统计的浏览器使用率数据 |
| validator/validate-jsons.js | 本地校验脚本 |
| CONTRIBUTING.md | 官方贡献指南,动手前必读 |
📌重要提醒:提交 patch 时不要修改根目录的压缩版 data.json,它由系统自动生成——你只需要改动features-json目录里的文件(见 CONTRIBUTING.md)。
二、克隆仓库并准备环境(最快配置方法)
只需安装 Node.js 即可,校验脚本只依赖 Node 内置模块,无需npm install:
git clone https://gitcode.com/gh_mirrors/ca/caniuse cd caniuse三、复制模板,编写你的 feature JSON
- 把 sample-data.json 复制为
features-json/你的feature-id.json。文件名就是 feature ID,只能用小写字母、数字和连字符(参考真实文件 features-json/avif.json)。 - 按模板填写各字段,核心字段一览:
| 字段 | 含义 | 注意事项 |
|---|---|---|
title/description | feature 名称与简述 | 用于表格标题 |
spec/status | 规范链接与状态 | status 取ls、rec、pr、cr、wd、other、unoff之一 |
categories | 分类 | 可选 HTML5、CSS3、JS API、DOM 等 12 种 |
stats | 各浏览器各版本的支持情况 | 只能改值,不能新增版本 |
notes/notes_by_num | 部分支持说明 | stats里的#n必须有对应条目 |
keywords | 搜索关键词 | 逗号分隔 |
shown | 是否在站点展示 | 新功能必须为false |
stats的支持值用单个字符表示,回答"该版本默认能否使用":
| 值 | 含义 |
|---|---|
y | 默认支持 |
a | 部分支持 |
n | 不支持 |
p | 不支持,但有 polyfill |
u | 未知 |
x | 需加前缀才能用 |
d | 默认禁用,需手动开启 |
y #1 | 支持,并引用 1 号备注 |
四、一键校验:npm run validate
package.json 内置了校验命令,提交前在仓库根目录运行:
npm run validatevalidator/validate-jsons.js 会逐个检查features-json下的 JSON,出错直接抛出错误。常见踩坑点:
- 缺少必填字段,或写入了模板之外的新字段
- 支持值写错(只允许
y a n u p x d和#数字备注引用) stats中引用了#n,但notes_by_num里没有对应说明(或反过来)- 缺少模板中已有的浏览器/版本键(版本覆盖必须与模板完全一致)
五、PR 准入标准:官方 checklist 逐条对照
CONTRIBUTING.md 明确列出了"优质 feature PR"的标准,满足越多,合并越快:
- 该 feature 在官方建议榜的投票高位——可先提 Issue 建议并拉票;
- 尚未被广泛支持——caniuse 回答的是"支持情况不一致"的问题,IE6/Chrome 1 起就支持的功能不收;
- 至少被一个(可能是未来的)浏览器支持;
- PR 附上测试用例链接(codepen、jsfiddle 均可);
- 数据经过验证——来自测试用例或可靠来源;不知道就写
u,不要猜; - 真实支持数据越多越好——建议在多浏览器上实测,主流浏览器都拿到实际数据后才会正式展示。
⚠️ 两个需要提前知道的规则:
- 新 feature 无论 PR 里写什么,一律从
shown: false起步,维护者合并后验证再开放展示,数据不合适也可能被撤回; - 目前不能:新增浏览器或版本、添加新 JSON 字段、修改自动生成的
usage_perc_y/usage_perc_a。
六、合并之后:数据如何反映到网站
站点数据存放在数据库中,定期导出为本仓库的 JSON;你的 PR 合并后会被写回数据库并在网站上生效,后续导出的文件会与你提交的内容保持一致(详见 CONTRIBUTING.md)。整个数据仓库采用CC BY 4.0协议,注明"来源 caniuse.com"即可自由使用。
✨总结:复制模板 → 填写兼容性表 →npm run validate校验 → 附测试用例链接提 PR。按这 4 步走,你就能顺利完成向 caniuse 贡献的第一个浏览器兼容性 feature。
【免费下载链接】caniuseRaw browser/feature support data from caniuse.com项目地址: https://gitcode.com/gh_mirrors/ca/caniuse
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考