extension.dev 是 Extension.js 的赞助方,可以在同一个项目里完成发布、商店提交和分享。它的文档覆盖
extension build 之后的步骤。前置条件
- 创建一个 Firefox 账号,并在 addons.mozilla.org 登录。
- 接受 Firefox Add-on Distribution Agreement。在你接受之前,API key 页面一直是锁着的——哪怕这个账号已经通过网页界面发布附加组件很多年了。
生成 API 凭据
- 打开 AMO API key 页面。
- 生成新的凭据。
- 复制 JWT issuer。它的形式是
user:12345678:987。多数工具口中的 API key 指的就是这个值。 - 立刻复制 JWT secret。
附加组件 ID 与首次提交
附加组件 ID(AMO 称它为 GUID)在每一次提交中标识你的附加组件。它同时也是要填进browser_specific_settings.gecko.id 的那个值。Extension.js 在这个键存在时会读取它,但从不替你写入。
规则取决于发布渠道:
- Listed(在 AMO 上公开上架):必须已经有一个 GUID。请先在 开发者中心 手工完成首次提交, 之后再自动化后续更新。
- Unlisted(签名后自行分发):首次提交时把 GUID 留空,AMO 会创建一个新的附加组件并分配 GUID。
listed,结果要么失败(没有
GUID),要么发布出一个你未必想要的公开上架(设置了 GUID)。
新附加组件的 manifest 要求
新的附加组件必须在 manifest 中声明数据收集权限,否则 AMO 会拒绝这次提交:browser_specific_settings.gecko.data_collection_permissions 时,面向 Firefox
目标的生产构建会发出警告。
只有当扩展确实不传输任何数据时才使用 ["none"]。这份声明、STORE.md
中的隐私章节以及代码三者必须一致。完整规则见
Firefox 商店就绪。
打包构建所需的源代码 zip
当上传的内容经过压缩或打包时,AMO 会要求提供源代码 zip——Extension.js 的生产构建正属于这种情况。用下面的命令生成:STORE.md 的审核者说明章节里讲清楚如何从源代码构建。

