install 把一个受管理的浏览器运行时加入 Extension.js 缓存。
当你希望在 dev、build、start 或 preview 中使用稳定一致的浏览器二进制时,这个命令最有用。它支持 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。见运行其他浏览器。 - 固定任意二进制:给
dev、start或preview传--chromium-binary <path>或--gecko-binary <path>。固定值会覆盖所有定位器。 - 请求
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 命令的能力
用法
参数与 flag
这里的 all 指什么
extension install --browser all 会安装 chrome、chromium、edge 与 firefox。这和运行类命令上的 --browser all 不同,后者只展开为 chrome、edge 与 firefox。安装集合还包含 Chromium,因为它是 dev 与 start 的默认启动目标。
用 --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 覆盖缓存根目录。
缓存里放了什么
每个浏览器在缓存根目录下都有自己的目录,但目录内部的布局取决于下载引擎:chrome、chromium与firefox来自@puppeteer/browsers。每个浏览器目录里会有它那套嵌套的平台与版本子目录。edge来自playwright install msedge,它用自己的结构摆放二进制。safari没有可下载的东西。Safari 随 macOS 一起提供,构建还需要完整的 Xcode app,所以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 app。- 在 Linux 上,
edge可能需要一个有权限的交互会话。

