贡献指南
感谢您对 PushReach 项目的关注!我们欢迎各种形式的贡献,包括但不限于:
- 提交 Bug 报告
- 提出功能建议
- 改进文档
- 提交代码修复
- 开发渠道适配器
- 分享使用经验
开发环境搭建
前置要求
- Node.js >= 18
- Java >= 17(后端服务)
- npm >= 9 或 pnpm >= 8
- Git
克隆仓库
bash
git clone https://github.com/gitcoffee-os/pushreach.git
cd pushreach安装依赖
bash
npm install
# 或
pnpm install启动开发服务器
bash
npm run dev贡献流程
1. 创建 Issue
在提交代码之前,请先创建 Issue 描述您要解决的问题或要添加的功能:
- 如果是 Bug,请描述复现步骤
- 如果是功能,请描述使用场景
- 如果是新渠道适配器,请描述渠道的 API 文档链接
2. Fork 仓库
点击 GitHub 页面的 Fork 按钮,将仓库 fork 到您的账号下。
3. 创建分支
bash
git checkout -b feature/your-feature-name
# 或
git checkout -b fix/your-bug-fix
# 或
git checkout -b channel/your-channel-name分支命名规范:
feature/*: 新功能fix/*: Bug 修复docs/*: 文档更新refactor/*: 代码重构channel/*: 新渠道适配器
4. 提交代码
代码规范
- 使用 ESLint 和 Prettier 进行代码格式化
- 遵循 Vue 3 组合式 API 风格
- TypeScript 严格模式启用
- 组件命名使用 PascalCase
- 函数命名使用 camelCase
提交信息规范
类型(scope): 简短描述
详细描述(可选)
Footer(可选)类型说明:
feat: 新功能fix: 修复docs: 文档style: 格式refactor: 重构perf: 性能优化test: 测试chore: 构建/工具
示例:
feat(channel): 添加飞书渠道适配器
- 支持飞书应用消息发送
- 支持飞书群消息发送
- 支持飞书机器人消息发送
Closes #1235. 推送分支
bash
git push origin feature/your-feature-name6. 创建 Pull Request
- 访问您 fork 的仓库
- 点击 "New Pull Request"
- 填写 PR 描述,关联相关 Issue
- 等待代码审查
渠道适配器贡献
PushReach 欢迎社区贡献新的渠道适配器,请遵循以下规范:
适配器开发要求
- 实现
ChannelAdapter接口 - 包含完整的单元测试
- 提供渠道配置文档
- 通过集成测试验证
适配器目录结构
packages/sdk/src/adapters/
├── sms/
│ ├── aliyun.ts
│ ├── tencent.ts
│ └── huawei.ts
├── email/
│ ├── smtp.ts
│ └── aliyun.ts
├── wechat/
│ ├── mp.ts
│ └── miniapp.ts
├── dingtalk/
│ └── index.ts
├── feishu/
│ └── index.ts
└── custom/
└── index.ts代码审查
所有代码提交都需要经过审查:
- 确保 CI 检查通过
- 至少一名维护者审查通过
- 解决审查意见
文档贡献
文档位于 docs/ 目录,使用 Markdown 编写。
文档规范
- 使用中文编写
- 代码块标明语言
- 图片放在
docs/public/images/目录
测试
运行测试
bash
# 运行所有测试
npm run test
# 运行指定模块测试
npm run test -- packages/sdk
# 覆盖率报告
npm run test:coverage添加测试
- 单元测试放在
__tests__目录 - 测试文件名以
.test.ts结尾 - 覆盖率要求 >= 80%
发布流程
维护者会定期发布新版本:
- 更新版本号
- 更新 CHANGELOG
- 创建 Release
- 发布到 npm
行为准则
参与本项目即表示您同意遵守我们的行为准则:
- 尊重他人,友善交流
- 接受建设性批评
- 关注社区最佳利益
- 禁止骚扰、歧视等行为
获取帮助
许可证
贡献即表示您同意将代码以 Apache License 2.0 许可发布。
致谢
感谢所有为 PushReach 做出贡献的开发者!