dist/<browser>,还能为分发生成 zip 包。
工作原理
运行一次生产构建:chromium。
选择浏览器
你可以为特定的浏览器/引擎进行构建:chromeedgefirefoxchromiumchromium-basedgecko-based/firefox-based(别名)
chrome、edge 和 firefox 构建。
输出布局
每个目标都会写入自己的目录:dist/chromedist/edgedist/firefoxdist/chromiumdist/chromium-baseddist/gecko-based
构建能力
生成 zip 文件
用--zip 从每个目标产物生成发布 zip:
name + version,例如:
my-extension-1.0.0.zip
dist/<browser> 目录中生成 my-release.zip。
包含源码归档
用--zip-source 在发布产物旁生成源码归档。
--zip-source 会生成:
dist/<name>-<version>-source.zip
Firefox 商店审核的数据收集权限
自 2025 年 11 月起,addons.mozilla.org 会拒绝所有 manifest 中缺少browser_specific_settings.gecko.data_collection_permissions 的新扩展,Mozilla 也已宣布该键将在 2026 年内对所有扩展强制生效。即使扩展不传输任何数据,也必须显式声明:
extension create 脚手架生成的新项目已包含此声明,firefox: 前缀让它不会进入 Chromium 构建。生产环境的 Firefox 构建会在最终 manifest 缺少该键时发出警告,因此缺失声明会在构建时暴露,而不是等到商店审核。
扩展确实传输用户数据却声明 "none" 属于违反 AMO 政策的行为。如果你的扩展收集或传输任何数据,请声明对应的分类。分类列表见 Mozilla 的内置数据同意文档。Firefox 桌面版从 140 起(Android 从 142 起)解析该键,Manifest V2 与 V3 均可安全使用。
为浏览器 API 打 polyfill
如果你的代码依赖 Gecko 风格的browser.* API,并且需要 Chromium 兼容性,请启用 --polyfill:
最佳实践
- 在持续集成 (CI) 中按目标构建:把每个浏览器的产物当作独立产物对待。
- 用浏览器矩阵命令做对等校验:在同一条流水线步骤里尽早发现特定目标的问题。
- 有意识地打包:用
--zip进行商店上传,用--zip-source留下可追溯的源码产物。 - 明确目标配置:通过
extension.config.*的命令/浏览器默认值实现可复现的构建。

