开发环境准备

Chrome 插件开发指南 · Chrome 版本、加载未打包扩展、推荐目录结构与工具链

作者 David更新于

写扩展不需要特殊 SDK:一个文本编辑器 + Chrome 即可。本篇说明最低环境、如何加载未打包扩展做热调试,以及团队项目常用的目录与构建工具选型。

10 课实战完整源码已开源:github.com/davidapp/chrome-extension-demos。clone 后每个课次目录均可直接在 chrome://extensions 加载验证。

直觉:像本地跑静态站,但入口是 manifest

网页开发用 npm run dev 起服务器;扩展开发是告诉 Chrome:这个文件夹是一个扩展,Chrome 按 manifest.json 注册 Service Worker 和注入规则。改代码后 mostly 在 chrome://extensions 点刷新。

环境要求

项建议
浏览器Chrome 128+ 或 Chromium 系(Edge 137+ 等);开发时打开 chrome://version 确认
编辑器VS Code / Cursor;推荐扩展 Chrome Extension Manifest File 做 JSON 校验
Node.js可选;用 TypeScript、打包、ESLint 时需要 Node 22+(与本站一致)
账号仅上架商店需要 $5 一次性 Chrome Web Store 开发者注册费

获取开源 Demo 仓库

git clone https://github.com/davidapp/chrome-extension-demos.git
cd chrome-extension-demos

也可 Download ZIP 解压。仓库内 01-hello-popup … 10-offscreen-document 十个目录与 实战课程 一一对应,每目录 README 含逐步操作说明。

加载未打包扩展

  1. 打开 chrome://extensions
  2. 右上角开启 开发者模式
  3. 点击 加载已解压的扩展程序,选择含 manifest.json 的目录
  4. 修改文件后,在该扩展卡片上点击 刷新(或勾选「重新加载扩展」相关选项)
my-extension/
├── manifest.json      # 必需
├── service-worker.js  # 示例:后台
├── popup.html
├── popup.js
└── icons/
    ├── icon16.png
    ├── icon48.png
    └── icon128.png

加载目录后,不要删除或移动该文件夹;Chrome 记录的是路径。换机器请复制整个目录或改用 zip 打包加载。

推荐目录结构(中小型项目)

chrome-extension/
├── manifest.json
├── src/
│   ├── background/        # Service Worker
│   ├── content/           # Content Scripts
│   ├── popup/             # Popup React/Vanilla
│   └── lib/               # 共享工具
├── public/
│   └── icons/
├── package.json           # 若用构建工具
└── dist/                  # 构建产物(加载此目录)

原则:开发时加载 dist/ 或根目录二选一,manifest 里引用的路径与加载目录一致。

工具链选型(可选)

工具适合说明
纯手写教程、极小扩展零依赖,本章 Hello World 即此路线
WXT现代 TS 项目类 Vite 体验,热重载、多浏览器目标
PlasmoReact 优先框架感强,上手快
esbuild / rollup 自配已有 monorepo扩展作为子包,完全自控

本专栏示例以手写 MV3 为主,避免框架掩盖 manifest 细节;工程化篇再展开 项目结构。

调试入口速查

要调试的对象入口
Service Workerchrome://extensions → 扩展卡片 → Service Worker 链接
Popup右键扩展图标 → 检查弹出内容
Content Script普通网页 DevTools → Sources → Content scripts
扩展页(options 等)右键页面 → 检查

常见误区

  1. 改 manifest 却不点刷新——多数 manifest 变更必须重载扩展;仅改 Content Script 有时刷新页面即可。
  2. 路径写错——"service_worker": "src/bg.js" 但加载的是 dist/,会报 Could not load background script。
  3. 用 file:// 测 Content Script——部分匹配规则不对本地文件生效;用 https://example.com 或本地静态服务器。

动手试一试

  1. Clone 开源 Demo 仓库(若仅跟 Hello World 手写,可跳过此步自建空目录):
git clone https://github.com/davidapp/chrome-extension-demos.git
cd chrome-extension-demos
  1. 打开 chrome://extensions,开启开发者模式,确认能看到 加载已解压的扩展程序
  2. 加载 01-hello-popup 体验第一课,或下一篇在空目录手写最小 manifest

小结

Chrome 128+、开发者模式、加载含 manifest.json 的目录,即构成最小开发环境。建议 clone 开源 Demo 仓库 按课次实战。记住 改代码 → 刷新扩展/页面 的循环。下一篇写出第一个可点击的 Hello World。

→ 下一篇:Hello World

本页目录