跳转到主要内容
为多个浏览器构建并打包同一个扩展,得到可预期的产物。 把同一个扩展发布到 Chrome、Edge 和 Firefox,不用维护多套构建脚本。Extension.js 会按目标分别运行生产构建,并把产物写入 dist/<browser>,还能为分发生成 zip 包。

工作原理

运行一次生产构建:
npx extension build
如果你不指定,默认的浏览器目标是 chromium

选择浏览器

你可以为特定的浏览器/引擎进行构建:
npx extension build --browser=chrome
npx extension build --browser=firefox
支持的取值包括:
  • chrome
  • edge
  • firefox
  • chromium
  • chromium-based
  • gecko-based / firefox-based(别名)
你也可以在一条命令里运行多目标构建矩阵:
npx extension build --browser=chrome,edge,firefox
这会依次为 chromeedgefirefox 构建。

输出布局

每个目标都会写入自己的目录:
  • dist/chrome
  • dist/edge
  • dist/firefox
  • dist/chromium
  • dist/chromium-based
  • dist/gecko-based

构建能力

选项作用
--browser=<target>为特定浏览器或引擎家族构建。
--zip为每个目标产物生成发布用 zip。
--zip-filename=<name>覆盖默认 zip 文件名。
--zip-source在产物旁额外生成源码归档。
--polyfill为 Chromium 系目标中使用 browser.* API 启用兼容性行为。

生成 zip 文件

--zip 从每个目标产物生成发布 zip:
npx extension build --zip
默认情况下,zip 名使用清洗后的 manifest name + version,例如:
  • my-extension-1.0.0.zip
自定义文件名:
npx extension build --zip --zip-filename=my-release
这会在对应的 dist/<browser> 目录中生成 my-release.zip

包含源码归档

--zip-source 在发布产物旁生成源码归档。 --zip-source 会生成:
  • dist/<name>-<version>-source.zip

为浏览器 API 打 polyfill

如果你的代码依赖 Gecko 风格的 browser.* API,并且需要 Chromium 兼容性,请启用 --polyfill
npx extension build --polyfill

最佳实践

  • 在持续集成 (CI) 中按目标构建:把每个浏览器的产物当作独立产物对待。
  • 用浏览器矩阵命令做对等校验:在同一条流水线步骤里尽早发现特定目标的问题。
  • 有意识地打包:用 --zip 进行商店上传,用 --zip-source 留下可追溯的源码产物。
  • 明确目标配置:通过 extension.config.* 的命令/浏览器默认值实现可复现的构建。

下一步