跳转到主要内容
跨浏览器扩展要提交到多个商店,而每个商店索要的材料几乎相同:商店文案、权限说明、隐私披露、审核备注和版本说明。STORE.md 约定把这些内容全部放进项目根目录下一个纳入版本控制的文件,重新提交时不必再从头整理。 这个文件还有第二个用途。支持该约定的部署工具会在提交时读取它,并附上各商店 API 接受的字段。其余内容则作为商店后台表单的复制粘贴参考。

结构

每个商店一个 ## 小节,共享材料放在商店小节之上。商店小节按标题文本匹配,因此 ## Firefox Add-ons## firefox-amo## AMO 都有效;Chrome 与 Edge 同理。

各商店读取什么

Firefox 与 Edge 的提交 API 接受面向审核者的备注,支持 STORE.md 的工具可以替你发送: Chrome Web Store 的 API 不接受任何商店页元数据,因此整个 Chrome 小节是开发者后台的参考材料。它的结构与 agent 工具在 CHROMEWEBSTORE.md 文件中期望的小节一致,寻找那些小节的 agent 在这里就能找到。

每个模板都自带起步文件

每个 Extension.js 模板都附带一个由自身 manifest 生成的起步 STORE.md。权限说明已经与模板请求的权限一一对应,占位行标注为 TODO。从任何模板创建项目,这个约定从第一次提交起就已就位:

保持内容最新

在让它过期的同一个改动里更新 STORE.md
  • manifest 变了permissionshost_permissionscontent_scripts):重新检查每条权限说明。每个权限都需要具体、直白的理由。“扩展运行需要” 在每个商店都过不了审。
  • 用户可见行为变了:更新商店文案并刷新最后更新日期。
  • 发布新版本:追加版本历史条目并重写版本说明。
  • 数据处理变了:同时更新隐私小节、它链接的隐私政策,以及 manifest 中 Firefox 的 data_collection_permissions 声明。三者必须一致。必填的 manifest 键参见 Firefox 商店审核的数据收集权限
  • 被商店拒绝:在版本历史中记录原因与修复方式,下次提交不再重蹈覆辙。

卫生守则

  • 把文件纳入 git。它是项目的一部分,不是草稿。
  • 别把它打进扩展 zip。生产构建只打包 dist/<browser>/,根目录的 STORE.md 永远不会随扩展发布。
  • 绝不放真实用户凭据。审核用测试账号从设计上就应该是一次性的。