- node 版本为 22.14.0
- pnpm 版本为 9.12.3
项目使用SVG格式的图标源文件,并通过脚本转换为所需的PNG格式图标。
- 确保已安装Node.js环境
- 运行以下命令安装必要的依赖:
pnpm install
- 运行转换脚本:
node convert_icons.js
这将把public/images/icon.svg文件转换为三种尺寸的PNG图标:
- icon16.png (16x16)
- icon48.png (48x48)
- icon128.png (128x128)
如果需要修改图标,请编辑public/images/icon.svg文件,然后重新运行转换脚本。
deep_chat_optimize/
├── public/ # 静态资源文件
│ ├── images/ # 图片资源
│ │ └── icon.svg # 图标源文件(SVG)
│ │ └── icon16.png # 16x16图标
│ │ └── icon48.png # 48x48图标
│ │ └── icon128.png # 128x128图标
│ ├── manifest.json # 扩展清单文件
│ └── content.css # 内容脚本样式
├── src/ # 源代码目录
│ ├── background/ # 背景脚本
│ │ └── index.js # 背景脚本入口
│ ├── content/ # 内容脚本
│ │ ├── components/ # 内容脚本组件
│ │ ├── core/ # 核心功能实现
│ │ ├── features/ # 特性功能实现
│ │ │ ├── data-extractors.js # 数据提取器
│ │ │ ├── export.js # 导出功能
│ │ │ ├── export-core.js # 导出核心功能
│ │ │ ├── export-ui.js # 导出UI组件
│ │ │ ├── image-renderer.js # 图像渲染
│ │ │ ├── prompt/ # 提示词相关功能
│ │ │ ├── promptFeature.js # 提示词功能
│ │ │ ├── themeManager.js # 主题管理
│ │ │ ├── themes.js # 主题定义
│ │ │ └── ui.js # UI功能
│ │ ├── utils/ # 内容脚本工具函数
│ │ └── index.jsx # 内容脚本入口
│ ├── popup/ # 弹出窗口
│ │ ├── components/ # 弹出窗口React组件
│ │ ├── contexts/ # React上下文
│ │ │ ├── LanguageContext.jsx # 语言上下文
│ │ │ ├── NotificationContext.jsx # 通知上下文
│ │ │ └── SettingsContext.jsx # 设置上下文
│ │ ├── styles/ # 样式文件
│ │ ├── index.html # 弹出窗口HTML
│ │ └── index.jsx # React入口
│ ├── options/ # 选项页
│ ├── utils/ # 通用工具函数
│ ├── contexts/ # 全局上下文
│ └── hooks/ # 自定义React Hooks
├── .github/ # GitHub相关配置
│ └── workflows/ # GitHub Actions工作流
│ └── release.yml # 自动构建和发布工作流
├── .gitignore # Git忽略文件
├── vite.config.js # Vite配置文件
├── package.json # 项目依赖配置
├── pnpm-lock.yaml # pnpm锁文件
├── convert_icons.js # 图标转换脚本
├── background.js # 背景脚本
├── content.js # 内容脚本
├── popup.html # 弹出窗口HTML
├── options.html # 选项页HTML
├── README.md # 项目说明文档
└── LICENSE # 许可证文件
- 前端:React.js、styled-components
- 状态管理:React Context API
- 数据存储:Chrome Storage API
- 打包工具:Vite + @crxjs/vite-plugin
- 包管理:pnpm
- 样式:CSS-in-JS (styled-components)
- 图像处理:html2canvas、sharp
- 文件处理:jszip
项目采用现代React架构,具有以下特点:
- 弹出窗口组件: 实现扩展的主要交互界面
- 内容脚本组件: 注入到目标网站的功能组件
- SettingsContext: 管理用户设置(深色模式、功能开关等)
- LanguageContext: 实现国际化多语言支持
- NotificationContext: 统一管理通知提示
- 使用styled-components实现组件样式
- 支持主题切换(浅色/深色模式)
- 响应式设计
- 自上而下的单向数据流
- 通过Context跨组件共享状态
- 使用Hooks管理组件生命周期和状态
pnpm installpnpm run devpnpm run buildpnpm run preview- pnpm run build 去生成 dist 目录
- 打开Chrome浏览器
- 访问 chrome://extensions/
- 开启"开发者模式"
- 点击"加载已解压的扩展程序"
- 选择项目的
dist目录
项目使用GitHub Actions自动构建和发布扩展包。当推送带有版本标签(如v1.0.0)的提交时,会自动触发构建流程:
- 检出代码
- 设置Node.js和pnpm环境
- 安装依赖
- 构建扩展
- 将dist目录打包为zip文件
- 创建GitHub Release并上传zip文件
- 更新
package.json中的版本号 - 提交更改并推送到GitHub
- 创建新的版本标签并推送
git tag v1.0.0 git push origin v1.0.0
- GitHub Actions将自动构建并发布扩展包
- 在GitHub Releases页面下载生成的zip文件
- 将zip文件上传到Chrome Web Store或其他浏览器扩展商店
项目支持多语言,目前实现了中文和英文两种语言。
在 src/popup/contexts/LanguageContext.jsx 中的translations对象中添加新的键值对。
const translations = {
'zh-CN': {
// 已有翻译
newKey: '新的翻译文本'
},
'en-US': {
// 已有翻译
newKey: 'New translation text'
}
};然后在组件中使用 t.newKey 来访问翻译文本。
欢迎贡献代码或提出建议!请遵循以下步骤:
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开一个 Pull Request