跳转到主要内容
通过显式的浏览器目标工作流,让一份扩展代码同时跑在 Chrome、Edge、Firefox 与自定义二进制上。

Chrome 扩展开发

进行 Chrome 扩展开发时,目标设为 chrome(或 chromium 使用默认 Chromium 二进制):extension dev --browser=chrome。Extension.js 会把扩展加载到一个全新的、隔离的 profile,并应用一组合理的 Chrome 启动 flag,让重载行为可预期。

Firefox 扩展开发

进行 Firefox 扩展开发时,目标设为 firefoxextension dev --browser=firefox。Manifest V3 的后台脚本会被编译为非持久的 scripts 数组(Firefox 不使用 service_worker),并且在 Firefox 中是用 preferences 取代了 Chromium 的 chrome://flags 概念。详见 浏览器 preferences

Edge 扩展开发

进行 Edge 扩展开发时,目标设为 edgeextension dev --browser=edge。Edge 与 Chrome 共用 Chromium 引擎,所以大多数 flag 与 API 都一致,但 Extension.js 仍会为分发产出独立的 dist/edge 产物。

跨浏览器扩展开发

进行跨浏览器扩展开发时,可以在一条命令中运行多个目标(extension dev --browser=chrome,firefox),并把浏览器差异留在 带浏览器前缀的 manifest 字段 中。一个项目、一份 manifest.json、按浏览器产出各自不同的输出。完整流水线请参见 跨浏览器兼容性

先看什么

你的需求推荐阅读
快速选择浏览器目标可用浏览器
自定义启动行为浏览器 flag
配置 Firefox preferences浏览器 preferences
控制 profile 隔离浏览器 profile
运行 Brave 或自定义二进制运行其他浏览器

实战目标策略

  1. 日常检查使用具名目标(chromeedgefirefox)。
  2. 发布前用逗号分隔的多目标做验证。
  3. 仅在需要自定义二进制时才用引擎目标。
  4. 把浏览器差异留在带浏览器前缀的 manifest 字段中。

下一步

视频演示