如何开始开发浏览器插件

如何开始开发浏览器插件


虽说开发浏览器插件就是使用前端的技术,但接口和工作方式还是和网页有些不同,所以找一些开发框架还是能提高不少效率的。而浏览器插件相比网页和 app 开发还是小众领域,开发者社区明显没有后者那么热闹。幸好该有的开发工具也都齐全了,这里梳理一下我用过的。

现在各大主流浏览器的插件开发都遵循统一标准: manifest v3,因此开发过程和技术栈都差不多。在一些细节上可能不一样,我会把我遇到的地方标注出来。

开发框架

一个合格的开发框架至少要建立 repo 结构、支持 hot reload 调试、支持浏览器插件的接口类型提示等等。以下这些技术栈选择一个即可。

代码仓库模板

React + typescript + vite + monorepo: https://github.com/Jonghakseo/chrome-extension-boilerplate-react-vite

准确的说它是一个模板,不是框架。它包含了一个开发框架应有的功能。对于浏览器插件这样接口不太复杂的开发,我个人更喜欢展现所有细节的仓库模板,而不是隐藏实现细节的框架。

  • 支持 HMR, sourcemap 等
  • 使用 pnpm + turbo 来管理 monorepo
  • 给出了 chrome 插件所有功能的实现,包括标签页首页、devtools、侧边栏等等,方便参考和替换
  • 打包给 chrome, firefox 等所有主流浏览器。对 firefox 默认做了兼容
  • 没有隐藏的细节,所有代码都展示出来,方便理解和修改

Plasmo

如果你不喜欢上面的模板,可以考虑 Plasmo 框架

  • 支持 react, vue, angular 等主流框架
  • 支持 HMR 等调试功能
  • 采用 Parcel 打包,没有用 vite
  • 一些细节(比如生成 manifest,渲染 content UI 的过程)被封装了,不好理解

调试

  • 加载插件
    • repo 里运行 npm dev
    • chrome 里打开扩展程序: chrome://extensions/
    • 打开“开发者模式” -> 点击“加载已解压的扩展程序” -> 选择编译后输出的文件夹
  • 调试都是通过 chrome devtools 实现的实现的
    • content scripts: 在“源代码”标签页中选择“content scripts”可以调试代码
    • background script 运行在 service worker 里,所以打开 chrome://extensions/ -> 找到扩展程序 -> 点击 service worker 可以调试代码