Skip to main content
通过显式的浏览器目标工作流,让一份扩展代码同时跑在 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、按浏览器产出各自不同的输出。完整流水线请参见 跨浏览器兼容性

先看什么

实战目标策略

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

下一步

视频演示