跳转到主要内容
为调试、自动化与运行时实验控制浏览器的启动行为。 无需修改扩展源代码,即可调整浏览器的启动行为。Extension.js 会合并你在 extension.config.* 中配置的浏览器 flag,并在 devpreviewstart 流程中应用它们。

Firefox 有 firefox://flags 吗?

Firefox 并不像 Chromium 系浏览器使用 chrome://flagsedge://flags 那样使用 firefox://flags。Firefox 通过 about:config(preferences)暴露运行时开关,并接受命令行传入的启动 flag。 如果你搜索过 firefox://flagsfirefox //flagsbrowser://flagsmozilla://flagsabout flags firefox,你大概率是想在扩展开发期间修改浏览器行为。在 Extension.js 中,这件事分两处来做:
  • browserFlags 配置 Extension.js 传给浏览器二进制的启动 flag。
  • Firefox preferences 配置原本会写在 about:config 中的、可复现的 Gecko 运行时行为。
这两种方式在同一个 Extension.js 项目里都同时适用于 Chrome、Edge 与 Firefox 的扩展开发。

模板示例

new-browser-flags

new-browser-flags template screenshot 通过一个配置了启动行为的 new-tab 扩展,直观了解浏览器 flag 的作用。
npx extension@latest create my-extension --template=new-browser-flags
仓库:extension-js/examples/new-browser-flags

工作原理

extension.config.* 中配置 flag:
  • browser.<target>.browserFlags
  • commands.dev|start|preview.browserFlags
  • 可选的 excludeBrowserFlags,用于移除默认 flag 或用户自定义的 flag(具体行为取决于目标是 Chromium 还是 Firefox)。
覆盖顺序:浏览器默认值 → 命令默认值 → CLI 选中的命令上下文。

flag 能力

配置键作用
browser.<target>.browserFlags为指定的浏览器目标设置默认启动 flag。
commands.dev.browserFlagsdev 运行添加或覆盖 flag。
commands.start.browserFlagsstart 运行添加或覆盖 flag。
commands.preview.browserFlagspreview 运行添加或覆盖 flag。
browser.<target>.excludeBrowserFlags为某个目标移除匹配的默认 flag 或用户自定义 flag。
commands.<name>.excludeBrowserFlags在特定命令上下文中移除 flag。

配置示例

export default {
  browser: {
    chrome: {
      browserFlags: ["--disable-web-security", "--auto-open-devtools-for-tabs"],
      excludeBrowserFlags: ["--mute-audio"],
    },
    firefox: {
      browserFlags: ["--devtools", "--new-instance"],
      excludeBrowserFlags: ["--devtools"],
    },
  },
};

Chromium 与 Firefox 行为对比

  • Chromium 家族(chromeedgechromiumchromium-based
    • 从一组内部默认 flag 出发,然后追加你的 browserFlags
    • excludeBrowserFlags 会移除匹配的默认 flag(按精确匹配过滤)。
    • Extension.js 自己管理 --load-extension=...,并会从用户传入的 flag 中将其过滤掉。
  • Firefox/Gecko 家族(firefoxgecko-based / firefox-based
    • 使用用户传入的 browserFlags(没有像 Chromium 那样的大量默认 flag)。
    • excludeBrowserFlags 按前缀匹配移除用户 flag。

Chromium 默认 flag

启动 Chromium 系浏览器时,Extension.js 会自动应用这些 flag。如果不需要其中某些,可以用 excludeBrowserFlags 移除。
flag用途
--no-first-run关闭首次运行体验
--disable-client-side-phishing-detection关闭钓鱼检测
--disable-sync关闭同步以避免账号提示
--disable-component-extensions-with-background-pages关闭不受 --disable-extensions 影响的内置扩展
--disable-default-apps关闭默认应用的安装
--disable-features=InterestFeedContentSuggestions关闭新标签页(NTP)上的 Discover feed
--disable-features=Translate关闭 Chrome 翻译
--hide-scrollbars在截图中隐藏滚动条
--mute-audio静音所有音频
--no-default-browser-check关闭默认浏览器检查提示
--ash-no-nudges避免用户教育引导
--disable-search-engine-choice-screen关闭搜索引擎选择界面
--disable-features=MediaRoute关闭 Chrome Media Router 后台网络
--use-mock-keychain在 Mac 上使用 mock keychain,避免阻塞性对话框
--disable-background-networking关闭后台网络服务
--disable-breakpad关闭崩溃转储收集
--disable-component-update关闭组件更新
--disable-domain-reliability关闭域名可靠性监控
--no-pings关闭超链接审计 ping
--enable-features=SidePanelUpdates确保侧边栏可见
--disable-features=DisableLoadExtensionCommandLineSwitch允许命令行使用 --load-extension
--enable-unsafe-extension-debugging允许 Chrome DevTools Protocol (CDP) 管理扩展(Chrome 126+)
--silent-debugger-extension-api抑制 “X is debugging this browser” 信息条
在 Docker、持续集成(CI)或容器化环境中,Extension.js 还会自动应用 --no-sandbox--disable-setuid-sandbox

支持的目标与参考资料

浏览器用法更多信息
Chromeextension dev --browser=chromeChrome Flags
Edgeextension dev --browser=edgeEdge Flags
Firefoxextension dev --browser=firefoxFirefox Flags
Chromium-basedextension dev --browser=chromium-basedChromium Flags
Gecko-basedextension dev --browser=gecko-based基于 Firefox 的浏览器使用与 Firefox 相同的 flag。
针对基于引擎的目标,需要时可使用二进制 flag:
  • --chromium-binary=...
  • --gecko-binary=...

最佳实践

  • 只加必要的 flag:尽量精简 flag 列表,避免不稳定或不可移植的配置。
  • 优先使用 excludeBrowserFlags,而不是整体替换默认值:只移除与你的工作流冲突的部分。
  • 不要手动传入 --load-extension:Extension.js 会在内部管理扩展加载相关的 flag。
  • 按浏览器家族分别验证:在 Chromium 上可用的 flag,在 Firefox 上可能无效或被忽略。

下一步