选择合适的目标
工作原理
在dev、start、preview 与 build 中使用 --browser 来选择目标。
如果不指定浏览器,CLI 默认使用 chromium。
safari(以及它的别名 webkit-based)是个例外:它是 alpha 阶段、仅在 macOS 可用的构建目标,仅 build 与 dev 支持——不支持 preview 或 start。详见 构建 Safari 扩展。
支持的浏览器
具名浏览器目标:
具名分支(从你的系统自动定位,无需二进制路径):
如果具名分支未安装,Extension.js 会带上安装指引退出。参见 运行其他浏览器。
基于引擎的目标(需要自定义二进制):
Extension.js 内部把
firefox-based 视为 Gecko 引擎目标。
Safari 与其他 WebKit 目标
除了 Chromium 家族与 Firefox(Gecko 引擎),Extension.js 还可以在 macOS 上把你的扩展构建成一个 Safari 应用。
Safari 是一个 构建目标:支持
build 与 dev,但不支持 preview 与 start(Safari 扩展无法被自动加载进一个正在运行的浏览器)。它需要 macOS 与完整的 Xcode app。完整工作流、要求以及如何在 Safari 中启用扩展,请参见 构建 Safari 扩展。
多浏览器选择
可以在一个命令中运行多个具名浏览器:--browser=chrome,edge,firefox)。
约束与行为
- 在会启动浏览器的命令(
dev、start、preview)中,chromium-based需要配合--chromium-binary;build不需要二进制。 gecko-based/firefox-based在同样的前提下需要配合--gecko-binary。- 基于引擎的目标会被路由到同样的 Chromium / Firefox 运行器,并具有引擎感知的行为。
- 作为
build目标时,引擎目标拥有独立的dist/<target>目录、.env.<target>解析、EXTENSION_BROWSER值与 manifest 前缀——见引擎目标对build意味着什么。
最佳实践
- 日常迭代用具名浏览器:
chrome、edge与firefox是常规测试中最快的路径。 - 有意识地使用引擎模式:在验证自定义二进制或需要家族通用构建时选用
chromium-based/gecko-based。 - 每个浏览器保持 profile 隔离:减少调试时的跨浏览器状态泄漏。
- 配合按浏览器划分的字段:用带浏览器前缀的 manifest 键处理真正的行为差异。

