Brie-Extension开发者指南:如何贡献代码并扩展插件功能
【免费下载链接】brie-extensionCapture screenshots, console errors, network issues, and user actions, giving developers full context instantly.项目地址: https://gitcode.com/gh_mirrors/br/brie-extension
Brie-Extension是一个功能强大的浏览器扩展,专为开发者设计,能够快速捕获屏幕截图、控制台错误、网络问题和用户操作,为bug报告提供完整的上下文信息。这个开源项目采用现代化的技术栈,包括React 19、TypeScript 5.8和Vite 6,为开发者提供了丰富的扩展功能和清晰的架构设计。
🚀 项目架构概览
Brie-Extension采用pnpm monorepo架构,由Turborepo协调,Vite作为构建工具。项目包含5个独立的构建入口点,每个都有特定的功能:
- 背景脚本(
chrome-extension/src/background/) - 服务工作者,处理标签事件、网络请求拦截、上下文菜单和消息路由 - 内容脚本(
pages/content/) - 在document_start注入,负责rrweb会话录制和早期DOM访问 - 内容UI(
pages/content-ui/) - 注入页面的React应用,提供标注编辑器、rrweb播放器和FFmpeg视频编码 - 内容运行时(
pages/content-runtime/) - 从弹出窗口动态注入的脚本 - 弹出窗口(
pages/popup/) - React应用,处理用户认证、捕获控制和设置
🛠️ 开发环境搭建指南
系统要求与准备工作
在开始贡献代码之前,请确保满足以下要求:
- Node.js版本:>= 22.12.0(推荐使用nvm进行版本管理)
- 包管理器:全局安装pnpm:
npm install -g pnpm - Git配置(仅Windows用户):设置正确的行尾符
git config --global core.eol lf git config --global core.autocrlf input
一键安装步骤
克隆仓库:
git clone https://gitcode.com/gh_mirrors/br/brie-extension cd brie-extension安装依赖:
pnpm install --frozen-lockfile环境配置:
- 复制环境文件:
cp .example.env .env - 根据env包文档配置必要的环境变量
- 复制环境文件:
验证安装:
pnpm run:chrome:local
🔧 多环境开发配置
Brie-Extension支持多种开发环境配置,使用统一的命令模式:pnpm <action>:<scope>:<env>
开发命令示例
| 命令 | 用途 | 目标浏览器 |
|---|---|---|
pnpm run:chrome:local | 本地开发(Chrome) | Chrome/Edge |
pnpm run:firefox:local | 本地开发(Firefox) | Firefox |
pnpm build:chrome:production | 生产构建(Chrome) | Chrome/Edge |
pnpm build:firefox:production | 生产构建(Firefox) | Firefox |
加载扩展到浏览器
Chrome/Edge浏览器:
- 运行开发命令:
pnpm run:chrome:local - 访问
chrome://extensions - 启用"开发者模式"
- 点击"加载已解压的扩展程序"
- 选择项目中的
dist目录
Firefox浏览器:
- 运行开发命令:
pnpm run:firefox:local - 访问
about:debugging#/runtime/this-firefox - 点击"加载临时附加组件"
- 选择
./dist/manifest.json文件
📁 项目结构与代码组织
共享包架构
Brie-Extension采用模块化设计,多个共享包通过@extension/*别名导入:
| 包名 | 功能描述 | 主要文件位置 |
|---|---|---|
@extension/shared | 类型、钩子、常量共享 | packages/shared/lib/ |
@extension/storage | Chrome Storage API助手 | packages/storage/lib/ |
@extension/store | Redux状态管理 | packages/store/lib/ |
@extension/i18n | 国际化支持 | packages/i18n/locales/ |
@extension/ui | Radix UI组件库 | packages/ui/lib/components/ |
通信模式设计
扩展内部使用类型化的消息处理器进行通信:
// 背景脚本与内容脚本通信示例 chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { // 处理消息逻辑 });🎯 代码贡献流程
分支管理与提交规范
创建功能分支:
git checkout -b feature/<功能描述> # 或 git checkout -b fix/<问题编号>提交消息格式:
<type>[(scope)]: <description>支持的提交类型:
feat/feature:新增功能fix/bugfix:修复bugrefactor:代码重构docs:文档更新build:构建配置ci:CI/CD配置chore:杂项更新
示例提交:
git commit -m 'feat(content-ui): 添加新的标注工具' git commit -m 'fix(storage): 修复本地存储同步问题'
代码质量保证
代码检查:
pnpm lint # 运行ESLint检查 pnpm lint:fix # 自动修复ESLint问题代码格式化:
pnpm format # 使用Prettier格式化代码类型检查:
pnpm type-check # TypeScript类型检查
🔄 扩展功能开发指南
添加新的内容脚本
在
pages/目录创建新文件夹:pages/new-feature/ ├── src/ │ ├── index.ts │ ├── NewFeature.tsx │ └── styles.css └── package.json配置构建入口: 在
chrome-extension/manifest.ts中添加新的内容脚本配置实现核心逻辑:
- 使用
@extension/shared中的共享类型 - 遵循现有的通信模式
- 集成状态管理(如果需要)
- 使用
创建新的共享包
初始化包结构:
mkdir -p packages/new-package cd packages/new-package pnpm init配置TypeScript:
- 参考
packages/tsconfig中的配置 - 设置正确的路径别名
- 参考
导出API:
// packages/new-package/lib/index.ts export { defaultFeature } from './feature'; export type { FeatureOptions } from './types';
🧪 测试与验证
端到端测试
Brie-Extension包含完整的E2E测试套件:
# 运行Chrome端到端测试 pnpm e2e # 运行Firefox端到端测试 pnpm e2e:firefox构建验证
生产构建检查:
pnpm build:chrome:production pnpm build:firefox:production打包验证:
pnpm zip # Chrome打包 pnpm zip:firefox # Firefox打包
📦 版本管理与发布
版本更新流程
使用内置脚本更新所有包的版本:
# 更新到新版本 pnpm update-version 1.0.0发布检查清单
- ✅ 所有测试通过
- ✅ 代码检查无错误
- ✅ 类型检查通过
- ✅ 构建成功
- ✅ 功能测试完成
- ✅ 文档更新完成
🌐 国际化支持
Brie-Extension支持14+种语言,国际化配置位于:
- 语言文件:
packages/i18n/locales/ - 添加新语言:
- 在
locales/下创建新的语言目录 - 在
docs/readme/中添加对应的README翻译 - 更新语言配置
- 在
🔍 调试技巧与最佳实践
Chrome开发者工具
背景脚本调试:
- 访问
chrome://extensions - 点击"服务工作者"链接
- 在开发者工具中调试
- 访问
内容脚本调试:
- 在目标页面打开开发者工具
- 切换到"扩展程序"面板
- 选择Brie扩展进行调试
网络请求监控
Brie扩展使用web-request.service.ts处理网络请求拦截,调试时可以:
- 查看控制台日志
- 监控存储变化
- 跟踪消息传递
🤝 社区贡献指南
寻找贡献机会
查看Good First Issues:
- 访问项目的问题跟踪器
- 寻找标记为
good first issue的问题
加入社区讨论:
- 通过Discord聊天室与团队交流
- 参与功能讨论和设计评审
提交Pull Request
创建PR:
- 从
develop分支创建功能分支 - 确保代码符合项目规范
- 提供详细的PR描述
- 从
PR审查要点:
- 代码符合架构规范
- 包含必要的测试
- 更新相关文档
- 提供功能截图(如适用)
📚 学习资源与进阶指南
核心技术栈文档
- React 19:现代React特性与并发模式
- TypeScript 5.8:类型安全与高级类型特性
- Vite 6:快速构建与开发体验
- TailwindCSS 3:实用优先的CSS框架
浏览器扩展开发资源
- Chrome扩展开发文档
- Firefox扩展开发指南
- WebExtensions API参考
🚀 快速开始贡献
第一步:设置开发环境
# 1. 克隆仓库 git clone https://gitcode.com/gh_mirrors/br/brie-extension cd brie-extension # 2. 安装依赖 pnpm install # 3. 启动开发服务器 pnpm run:chrome:local第二步:选择贡献方向
根据你的技能和兴趣选择:
- 前端开发:改进UI组件(
packages/ui/) - 功能开发:添加新功能模块
- 国际化:添加新的语言支持
- 文档:完善使用文档和开发指南
- 测试:编写单元测试和E2E测试
第三步:开始编码
遵循项目的最佳实践:
- 阅读架构文档
- 遵循命名规范
- 使用现有的代码模式
- 保持代码简洁和可维护
💡 常见问题与解决方案
Q1:构建失败怎么办?
A:检查Node.js版本(需要>=22.12.0),清理缓存后重试:
pnpm clean pnpm installQ2:扩展在浏览器中不显示?
A:确保正确加载扩展,检查控制台错误,验证manifest配置。
Q3:国际化文本不显示?
A:检查语言文件路径,验证i18n配置,确保正确导入语言包。
Q4:状态管理出现问题?
A:使用Redux DevTools调试,检查store配置,验证action和reducer。
🎉 总结与下一步
Brie-Extension是一个设计精良、架构清晰的浏览器扩展项目,为开发者提供了丰富的功能和良好的开发体验。通过遵循本指南,你可以:
- ✅ 快速搭建开发环境
- ✅ 理解项目架构和代码组织
- ✅ 掌握代码贡献流程
- ✅ 扩展插件功能
- ✅ 参与社区贡献
无论你是前端开发者、浏览器扩展爱好者,还是想要学习现代Web开发技术,Brie-Extension都是一个绝佳的学习和实践项目。开始你的贡献之旅,帮助改进这个强大的bug报告工具吧!
记住:每个贡献,无论大小,都对项目的发展至关重要。欢迎加入Brie社区,一起打造更好的开发者工具! 🚀
【免费下载链接】brie-extensionCapture screenshots, console errors, network issues, and user actions, giving developers full context instantly.项目地址: https://gitcode.com/gh_mirrors/br/brie-extension
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考