# 贡献指南 (Contributing Guide) 欢迎来到 **KVideo** 项目!我们非常感谢你愿意为这个项目做出贡献。无论是修复 Bug、添加新功能、改进文档,还是提出建议,你的每一份贡献都将让这个项目变得更好。 为了确保协作顺畅、代码质量一致,请在提交贡献前仔细阅读本指南。 ## 📋 目录 - [行为准则](#行为准则) - [快速开始](#快速开始) - [开发环境设置](#开发环境设置) - [代码规范](#代码规范) - [Git 工作流程](#git-工作流程) - [提交规范](#提交规范) - [Pull Request 指南](#pull-request-指南) - [设计系统规范](#设计系统规范) - [测试要求](#测试要求) - [常见问题](#常见问题) ## 🤝 行为准则 我们致力于构建一个开放、友好、包容的社区环境。请在参与项目时: - ✅ 保持尊重和礼貌 - ✅ 欢迎不同的观点和经验 - ✅ 接受建设性的批评 - ✅ 专注于对社区最有利的事情 - ❌ 不要使用性别化的语言或图像 - ❌ 不要进行人身攻击或政治攻击 - ❌ 不要骚扰或歧视他人 详细的行为准则请参阅 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 ## 🚀 快速开始 ### 我能贡献什么? 以下是一些你可以做出贡献的方式: 1. **🐛 报告 Bug**:发现了问题?请提交 Issue 2. **💡 提出新功能**:有好想法?在 Discussions 或 Issues 中分享 3. **📝 改进文档**:发现文档不清晰或有错误?帮助我们改进 4. **🎨 优化 UI/UX**:让界面更美观、更易用 5. **⚡ 性能优化**:让应用运行得更快 6. **🔧 修复 Bug**:解决现有的问题 7. **✨ 添加功能**:实现新的特性 ### 第一次贡献? 如果这是你第一次为开源项目做贡献,我们推荐: 1. 浏览 [GitHub Issues](https://github.com/KuekHaoYang/KVideo/issues) 2. 寻找标记为 `good first issue` 的问题 3. 在 Issue 中评论,表明你想要解决这个问题 4. 按照本指南进行开发和提交 ## 🛠 开发环境设置 ### 系统要求 确保你的开发环境满足以下要求: | 工具 | 最低版本 | 推荐版本 | 检查命令 | |------|----------|----------|----------| | **Node.js** | 20.0.0 | 22.x LTS | `node --version` | | **npm** | 9.0.0 | 10.x | `npm --version` | | **Git** | 2.30.0 | 最新版本 | `git --version` | ### 详细设置步骤 #### 1. Fork 仓库 点击 GitHub 页面右上角的 "Fork" 按钮,将项目 Fork 到你的账号下。 #### 2. 克隆仓库 ```bash # 克隆你 Fork 的仓库 git clone https://github.com/YOUR_USERNAME/KVideo.git cd KVideo # 添加上游仓库 git remote add upstream https://github.com/KuekHaoYang/KVideo.git ``` #### 3. 安装依赖 ```bash npm install ``` #### 4. 启动开发服务器 ```bash npm run dev ``` 访问 `http://localhost:3000` 查看应用。 #### 5. 验证环境 确保以下命令都能正常运行: ```bash # 代码检查 npm run lint # 构建测试 npm run build ``` ## 📏 代码规范 ### 核心规范 #### 1. 文件长度限制 ⚠️ > [!CAUTION] > **这是项目的硬性规则!所有项目文件必须保持在 150 行以内(除系统文件外)。** **检查命令:** ```bash find . -type f -not -path "*/node_modules/*" -not -path "*/.next/*" -not -path "*/.git/*" -not -name "package-lock.json" -not -name "*.png" -not -name "*.md" | xargs wc -l | awk '$1 > 150 && $2 != "total" {print $2 " - " $1 "行"}' ``` **如果命令有输出,说明有文件超过 150 行,必须重构!** **重构策略:** 如果文件超过 150 行,请使用以下方法重构: ##### A. 提取组件 **问题:** 一个组件太长,包含太多 JSX **解决方案:** 将大组件拆分为多个小组件 ```typescript // ❌ 不好:一个 200 行的大组件 export function VideoPlayer() { // 150+ 行代码 return (