入口概念
入口(Entry) 对应浏览器扩展的各个功能模块,如后台脚本、内容脚本、弹窗页面等。Addfox 提供三种配置方式,你可以单独使用或混合使用。
什么是入口
浏览器扩展由多个独立的功能模块组成,每个模块都需要一个入口文件:
配置方式
方式一:基于文件(推荐)
不配置 entry,由框架按目录和文件名自动发现入口。
app
background
index.ts# → background 入口
content
index.ts# → content 入口
popup
index.ts# → popup 入口
...
优点:
- 零配置,遵循约定即可
- 新增入口只需创建对应目录
- 代码结构清晰
详见 基于文件的入口。
方式二:基于配置(entry + manifest)
在 addfox.config.ts 中通过 entry 与 manifest 共同配置入口相关能力:
优点:
- 入口与清单配置集中管理
- 支持自定义入口名称
- 可覆盖自动发现结果
详见 基于配置的入口 与 manifest 配置。
混合使用
三种方式可以混合使用,优先级如下:
- 最高:
config.entry中配置的入口 - 第二:manifest 中指定的源文件路径
- 第三:自动发现
核心原则
入口必须是 JS/TS
Addfox 基于 Rsbuild 构建,真实的构建入口只能是 .js、.jsx、.ts、.tsx 脚本文件。
HTML 的处理
- 无需 HTML 的入口:
background、content只需脚本文件 - 需要 HTML 的入口:
popup、options、sidepanel、devtools、offscreen- 若不提供 HTML,Rsbuild 会自动生成(包含
<div id="app"></div>) - 若提供自定义 HTML 模板,必须在模板中通过
data-addfox-entry标明入口脚本
- 若不提供 HTML,Rsbuild 会自动生成(包含
示例:自定义 HTML 模板
内置入口与自定义入口
内置入口(保留名称)
以下名称具有特殊含义,Addfox 会自动识别并处理:
Warning
内置入口名称不可修改。框架依赖这些名称进行自动识别和 manifest 路径填充。
自定义入口
除内置入口外,你可以在 entry 中配置任意名称作为自定义入口(如 capture、my-page):
自定义入口会产出独立的页面,可通过 chrome-extension://<id>/capture/index.html 访问。
下一步
- 基于文件的入口 — 学习约定式入口发现规则
- 基于配置的入口 — 了解如何显式配置 entry + manifest
- manifest 配置 — 在 manifest 中配置扩展能力

