跳轉到主要內容
控制瀏覽器啟動行為,用於除錯、自動化與執行階段的實驗。 在不修改擴充功能原始碼的情況下調整瀏覽器啟動行為。Extension.js 會合併你在 extension.config.* 中設定的瀏覽器旗標,並在 devpreviewstart 流程中套用。

Firefox 有 firefox://flags 嗎?

Firefox 不像 Chromium 系列瀏覽器使用 chrome://flagsedge://flags 那樣使用 firefox://flags。Firefox 透過 about:config(偏好設定)公開執行階段的開關,並接受從命令列傳入的啟動旗標。 如果你搜尋過 firefox://flagsfirefox //flagsbrowser://flagsmozilla://flagsabout flags firefox,你很可能是想在擴充功能開發期間改變瀏覽器行為。在 Extension.js 中,你會從兩個地方著手:
  • 使用 browserFlags 來傳遞 Extension.js 啟動瀏覽器執行檔時所用的啟動旗標。
  • 使用 Firefox 偏好設定 來設定原本會放在 about:config 中、可重複套用的 Gecko 執行階段行為。
從同一份 Extension.js 專案,這兩種方式都能用於 Chrome、Edge 與 Firefox 的擴充功能開發。

範本範例

new-browser-flags

new-browser-flags template screenshot 透過一個會設定啟動行為的 new-tab 擴充功能,實際看看瀏覽器旗標的運作方式。
npx extension@latest create my-extension --template=new-browser-flags
儲存庫:extension-js/examples/new-browser-flags

運作方式

extension.config.* 中設定旗標:
  • browser.<target>.browserFlags
  • commands.dev|start|preview.browserFlags
  • 可選的 excludeBrowserFlags,可移除預設旗標或使用者旗標(行為會因目標是 Chromium 或 Firefox 而不同)。
覆寫順序:瀏覽器預設 → 指令預設 → CLI 所選的指令情境。

旗標功能

設定鍵用途
browser.<target>.browserFlags為特定瀏覽器目標設定預設啟動旗標。
commands.dev.browserFlagsdev 執行新增或覆寫旗標。
commands.start.browserFlagsstart 執行新增或覆寫旗標。
commands.preview.browserFlagspreview 執行新增或覆寫旗標。
browser.<target>.excludeBrowserFlags為某個目標移除符合的預設或使用者旗標。
commands.<name>.excludeBrowserFlags在特定指令情境中移除旗標。

設定範例

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)
    • 從內建的預設旗標集開始,接著附加你的 browserFlags
    • excludeBrowserFlags 會移除符合的預設旗標(完全相符的過濾)。
    • Extension.js 自行管理 --load-extension=...,並會從使用者提供的旗標中過濾掉它。
  • Firefox/Gecko 系列(firefoxgecko-based / firefox-based)
    • 使用使用者提供的 browserFlags(沒有 Chromium 那種龐大的預設旗標組)。
    • excludeBrowserFlags 會以前綴比對的方式移除使用者旗標。

Chromium 的預設旗標

Extension.js 在啟動 Chromium 系列瀏覽器時會自動套用以下旗標。若有不需要的,使用 excludeBrowserFlags 移除即可。
旗標用途
--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 資訊流
--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 上使用模擬鑰匙圈,避免阻擋對話框
--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 相同的旗標。
在需要時對引擎類型的目標傳入執行檔旗標:
  • --chromium-binary=...
  • --gecko-binary=...

最佳實務

  • 只加入必要的旗標:減少冗長的旗標清單,降低不穩定或不可攜的設定。
  • 優先使用 excludeBrowserFlags,而不是整個取代預設:只移除會與你工作流程衝突的部分。
  • 不要手動傳 --load-extension:Extension.js 會在內部管理擴充功能載入相關旗標。
  • 針對每個瀏覽器家族驗證:在 Chromium 上有效的旗標,在 Firefox 上可能無效或被忽略。

後續步驟