Files
xget/CONTRIBUTING.md
T
xixu-me b264c9d713 Update documentation for clarity and formatting
Improved wording, formatting, and badge order in README.md to better highlight Xget's features and advantages. Fixed spacing and link formatting in CONTRIBUTING.md and test/README.md for consistency and readability.
2025-07-24 22:24:31 +08:00

5.0 KiB

贡献指南

感谢您对 Xget 的关注!我们欢迎各种形式的贡献,包括但不限于代码、文档、测试、反馈和建议。

🤝 贡献方式

报告问题

  • 使用 Issue 模板报告 bug 或提出功能请求
  • 搜索现有 issues 避免重复报告
  • 提供详细的重现步骤和环境信息

提交代码

  • Fork 存储库到您的 GitHub 账户
  • 创建功能分支 (git checkout -b feature/amazing-feature)
  • 提交更改 (git commit -m 'Add some amazing feature')
  • 推送到分支 (git push origin feature/amazing-feature)
  • 创建 Pull Request

改进文档

  • 修正文档中的错误或不准确信息
  • 添加使用示例和最佳实践
  • 翻译文档到其他语言
  • 改进代码注释和 API 文档

🛠️ 开发环境设置

前置要求

  • Node.js 18+
  • npm 或 yarn
  • Git
  • Cloudflare 账户(用于测试部署)

本地开发

# 克隆存储库
git clone https://github.com/xixu-me/Xget.git
cd Xget

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 运行测试
npm test

# 代码格式化
npm run format

# 代码检查
npm run lint

📝 代码规范

代码风格

  • 使用 2 个空格缩进
  • 使用分号结尾
  • 使用单引号字符串
  • 遵循 ESLint 配置规则

命名约定

  • 变量和函数使用 camelCase
  • 常量使用 UPPER_SNAKE_CASE
  • 类名使用 PascalCase
  • 文件名使用 kebab-case

注释规范

/**
 * 函数描述
 * @param {string} param1 - 参数1描述
 * @param {Object} param2 - 参数2描述
 * @returns {Promise<Response>} 返回值描述
 */
function exampleFunction(param1, param2) {
  // 实现逻辑
}

🧪 测试

测试类型

  • 单元测试: 测试单个函数和模块
  • 集成测试: 测试组件间的交互
  • 端到端测试: 测试完整的用户场景

运行测试

# 运行所有测试
npm test

# 运行特定测试文件
npm test -- --grep "platform"

# 生成测试覆盖率报告
npm run test:coverage

编写测试

  • 为新功能编写相应的测试
  • 确保测试覆盖率不低于 80%
  • 使用描述性的测试名称
  • 测试边界情况和错误处理

🚀 提交规范

Commit 消息格式

使用 Conventional Commits 规范:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

类型说明

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • style: 代码格式化(不影响功能)
  • refactor: 代码重构
  • perf: 性能优化
  • test: 测试相关
  • chore: 构建过程或辅助工具的变动

示例

feat(platforms): add support for Bitbucket
fix(cache): resolve cache invalidation issue
docs(readme): update installation instructions
perf(proxy): optimize request handling performance

🔍 Pull Request 流程

提交前检查

  • 代码通过所有测试
  • 代码符合存储库规范
  • 添加了必要的测试
  • 更新了相关文档
  • Commit 消息符合规范

PR 描述模板

请使用 PR 模板填写详细信息。

代码审查

  • 所有 PR 需要至少一个维护者的审查
  • 解决审查中提出的问题
  • 保持 PR 的焦点明确,避免混合多个不相关的更改

🌟 贡献认可

贡献者列表

我们会在 README.md 中维护贡献者列表,感谢每一位贡献者的付出。

贡献统计

  • 代码贡献会在 GitHub 贡献图中显示
  • 重要贡献会在 Release Notes 中特别提及
  • 长期贡献者可能被邀请成为存储库维护者

📋 开发任务

当前优先级

  1. 性能优化: 提升缓存效率和响应速度
  2. 平台支持: 添加新的代码托管和包管理平台
  3. 安全增强: 加强请求验证和安全防护
  4. 监控改进: 完善性能监控和错误追踪

适合新手的任务

查找标有 good first issue 标签的 issues,这些通常是:

  • 文档改进
  • 简单的 bug 修复
  • 代码格式化
  • 测试用例添加

🤔 获取帮助

沟通渠道

  • GitHub Issues: 报告问题和功能请求
  • GitHub Discussions: 一般讨论和问答
  • Email: 敏感问题可发送至维护者邮箱

常见问题

Q: 如何添加新平台支持? A: 编辑 src/config/platforms.js 文件,添加平台配置,然后更新相关文档和测试。

Q: 如何测试 Cloudflare Workers 功能? A: 使用 npm run dev 启动本地开发服务器,或部署到 Cloudflare Workers 测试环境。

Q: 如何处理跨域问题? A: 检查 CORS 配置,确保允许的源和方法设置正确。

📄 许可证

通过贡献代码,您同意您的贡献将在与存储库相同的 GPL-3.0 许可证 下发布。

🙏 致谢

感谢所有为 Xget 做出贡献的开发者、测试者和用户。您的支持和反馈是存储库持续改进的动力!


如果您有任何问题或建议,请随时通过 GitHub Issues 或 Discussions 与我们联系。我们期待您的参与!