extension.config.* 中配置的浏览器 flag,并在 dev、preview 与 start 流程中应用它们。
Firefox 有 firefox://flags 吗?
Firefox 并不像 Chromium 系浏览器使用 chrome://flags 或 edge://flags 那样使用 firefox://flags。Firefox 通过 about:config(preferences)暴露运行时开关,并接受命令行传入的启动 flag。
如果你搜索过 firefox://flags、firefox //flags、browser://flags、mozilla://flags 或 about flags firefox,你大概率是想在扩展开发期间修改浏览器行为。在 Extension.js 中,这件事分两处来做:
- 用
browserFlags配置 Extension.js 传给浏览器二进制的启动 flag。 - 用 Firefox preferences 配置原本会写在
about:config中的、可复现的 Gecko 运行时行为。
模板示例
new-browser-flags

工作原理
在extension.config.* 中配置 flag:
browser.<target>.browserFlagscommands.dev|start|preview.browserFlags- 可选的
excludeBrowserFlags,用于移除默认 flag 或用户自定义的 flag(具体行为取决于目标是 Chromium 还是 Firefox)。
flag 能力
配置示例
Chromium 与 Firefox 行为对比
-
Chromium 家族(
chrome、edge、chromium、chromium-based)- 从一组内部默认 flag 出发,然后追加你的
browserFlags。 excludeBrowserFlags会移除匹配的默认 flag(按精确匹配过滤)。- Extension.js 自己管理
--load-extension=...,并会从用户传入的 flag 中将其过滤掉。
- 从一组内部默认 flag 出发,然后追加你的
-
Firefox/Gecko 家族(
firefox、gecko-based/firefox-based)- 使用用户传入的
browserFlags(没有像 Chromium 那样的大量默认 flag)。 excludeBrowserFlags按前缀匹配移除用户 flag。
- 使用用户传入的
Chromium 默认 flag
启动 Chromium 系浏览器时,Extension.js 会自动应用这些 flag。如果不需要其中某些,可以用excludeBrowserFlags 移除。
在 Docker、持续集成(CI)或容器化环境中,Extension.js 还会自动应用
--no-sandbox 与 --disable-setuid-sandbox。支持的目标与参考资料
针对基于引擎的目标,需要时可使用二进制 flag:
--chromium-binary=...--gecko-binary=...
最佳实践
- 只加必要的 flag:尽量精简 flag 列表,避免不稳定或不可移植的配置。
- 优先使用
excludeBrowserFlags,而不是整体替换默认值:只移除与你的工作流冲突的部分。 - 不要手动传入
--load-extension:Extension.js 会在内部管理扩展加载相关的 flag。 - 按浏览器家族分别验证:在 Chromium 上可用的 flag,在 Firefox 上可能无效或被忽略。
下一步
- 进一步了解 浏览器 preferences。
- 进一步了解 浏览器 profile。
- 在 可用浏览器 中选择目标。
- 通过
extension.config.*串联 flag 配置。 - 第一次接触扩展工具链?先从 浏览器扩展框架 概览开始。

