Skip to main content
使用 install 把受管理的瀏覽器執行階段加入 Extension.js 的快取。 當你想為 devbuildstartpreview 使用一致的瀏覽器執行檔時,這個功能特別實用。它支援 Chrome for Testing、Chromium、Firefox 與 Edge。

何時使用 install

  • 你需要一致、可重複的瀏覽器執行檔,以利持續整合(CI)、自動化或團隊在本機共用相同版本。
  • 你想用 Chrome for Testing,而不依賴系統已安裝的 Chrome 版本。
  • 你正在使用受管理的 Firefox 或 Edge 執行階段建立跨瀏覽器測試環境。

為什麼 Extension.js 會下載瀏覽器

執行類指令偏好受管理的瀏覽器執行階段,而不是你日常使用的瀏覽器。
  • 受管理的執行檔有固定版本。dev、CI 執行與團隊成員都會啟動同一個建置。
  • Chrome for Testing 是為自動化打造的。近期的品牌版 Chrome 建置(150+)可能移除用來載入擴充功能的 --load-extension 切換參數。
  • 受管理的執行階段在隔離的設定檔中執行。它永遠不會碰到你的個人瀏覽器、它的設定檔或它的設定。
你不必事先執行 install。當請求的目標沒有可用的執行檔時,執行類指令會印出確切的安裝指令。

略過受管理下載

你可以直接對已安裝的瀏覽器開發,不需任何下載:
  • 依名稱執行分支:extension dev --browser=brave 會為你定位已安裝的 Brave。參見 執行其他瀏覽器
  • 固定任何執行檔:把 --chromium-binary <path>--gecko-binary <path> 傳給 devstartpreview。這個固定值會覆寫所有定位器。
  • 請求 edge 時,若沒有受管理的 Edge,會啟動系統上已安裝的 Edge。
  • 請求 chrome 時,會拒絕品牌版的系統 Chrome,並要求改用 Chrome for Testing。
  • 無論如何都要執行品牌版 Chrome 時,用 --chromium-binary 固定它。

系統已安裝 Edge 時

--browser=edge 會自行找到系統的 Edge,所以你可以略過 extension install edge。只有在你想要一份固定版本、供自動化使用的受管理副本時,才執行 extension install edge 在 Linux 上,受管理的 Edge 下載需要具備 sudo 權限的互動式工作階段。當下載失敗且系統存在 Edge 時,安裝程式會回報系統執行檔,並以它成功完成。

標準用法

單一瀏覽器使用位置引數形式:
只有在你需要多目標、引擎家族或 all 時,才使用 --browser

Install 指令功能

用法

引數與旗標

這裡的 all 是什麼意思

extension install --browser all 會安裝 chromechromiumedgefirefox。這與執行類指令上的 --browser all 不同,後者只展開為 chromeedgefirefox。安裝集合也包含 Chromium,因為它是 devstart 的預設啟動目標。

--output json 取得機器可讀輸出

--output json 會在 stdout 印出一個 schema-1 信封:
  • 成功的安裝會印出一個 status: "installed" 框,已安裝的瀏覽器在 value.browsers 中。
  • --where 會印出一個 status: "located" 框,解析後的路徑在 value.paths 中。
  • 下載失敗會在行程以 1 結束前印出 ok: false,其 error.code: "E_BROWSER_DOWNLOAD"

範例

安裝 Chrome for Testing

在一個指令中安裝多個目標

顯示 Chrome 的受管理安裝路徑

快取位置

預設情況下,Extension.js 會把受管理的瀏覽器存放在使用者層級、穩定的快取中:
  • macOS:~/Library/Caches/extension.js/browsers
  • Linux:~/.cache/extension.js/browsers$XDG_CACHE_HOME/extension.js/browsers
  • Windows:%LOCALAPPDATA%\extension.js\browsers
可以使用 EXT_BROWSERS_CACHE_DIR 覆寫快取根目錄。

快取裡放了什麼

每個瀏覽器在快取根目錄下都有自己的資料夾,但資料夾內部的配置會因下載引擎而異:
  • chromechromiumfirefox 來自 @puppeteer/browsers。每個瀏覽器目錄裡會有它那套巢狀的平台與版本資料夾。
  • edge 來自 playwright install msedge,它以自己的結構擺放執行檔。
  • safari 沒有可下載的內容。Safari 隨 macOS 一起提供,建置還需要完整的 Xcode 應用程式,所以 extension install safari 會附上說明並拒絕執行。
  • 像 Brave 這樣的具名分支永遠不會被下載。請改用 --chromium-binary--gecko-binary 指向它們。
請使用 --where,不要把路徑寫死,因為巢狀配置可能隨下載引擎改變。

專案本地的執行檔

設定 EXTENSIONJS_BINARIES_IN_DIST=1,可讓執行類指令在專案內的 dist/extension-js/binaries 下解析受管理的執行檔,而不是共用的使用者層級快取。這適合沙箱化或完全自足的專案設定。

最佳實務

  • 在 CI 中使用 install,以固定一致的瀏覽器執行檔,不依賴 runner 所提供的版本。
  • 優先使用 chrome 而非 chromium:Chrome for Testing 較貼近穩定版 Chrome 的行為。
  • 使用 --where 在撰寫受管理瀏覽器自動化前先確認快取路徑。
  • install 只管理 Extension.js 快取內的瀏覽器。它不會更動系統上的瀏覽器安裝。

行為說明

  • chrome 會安裝 Chrome for Testing,而不是依賴系統的 Google Chrome 應用程式。
  • edge 在 Linux 上可能需要具備權限的互動式工作階段。

後續步驟