如何给开源项目caniuse贡献数据:新增一个浏览器兼容性feature的完整教程与PR准入标准
2026/8/23 15:55:03 网站建设 项目流程

如何给开源项目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

  1. 把 sample-data.json 复制为features-json/你的feature-id.json文件名就是 feature ID,只能用小写字母、数字和连字符(参考真实文件 features-json/avif.json)。
  2. 按模板填写各字段,核心字段一览:
字段含义注意事项
title/descriptionfeature 名称与简述用于表格标题
spec/status规范链接与状态status 取lsrecprcrwdotherunoff之一
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 validate

validator/validate-jsons.js 会逐个检查features-json下的 JSON,出错直接抛出错误。常见踩坑点:

  • 缺少必填字段,或写入了模板之外的新字段
  • 支持值写错(只允许y a n u p x d#数字备注引用)
  • stats中引用了#n,但notes_by_num里没有对应说明(或反过来)
  • 缺少模板中已有的浏览器/版本键(版本覆盖必须与模板完全一致)

五、PR 准入标准:官方 checklist 逐条对照

CONTRIBUTING.md 明确列出了"优质 feature PR"的标准,满足越多,合并越快:

  1. 该 feature 在官方建议榜的投票高位——可先提 Issue 建议并拉票;
  2. 尚未被广泛支持——caniuse 回答的是"支持情况不一致"的问题,IE6/Chrome 1 起就支持的功能不收;
  3. 至少被一个(可能是未来的)浏览器支持
  4. PR 附上测试用例链接(codepen、jsfiddle 均可);
  5. 数据经过验证——来自测试用例或可靠来源;不知道就写u,不要猜;
  6. 真实支持数据越多越好——建议在多浏览器上实测,主流浏览器都拿到实际数据后才会正式展示。

⚠️ 两个需要提前知道的规则:

  • 新 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询