mirror of
https://github.com/ILoveBingLu/CipherTalk.git
synced 2026-03-22 15:18:06 +08:00
248 lines
4.5 KiB
Markdown
248 lines
4.5 KiB
Markdown
# 贡献指南
|
||
|
||
感谢你对密语 CipherTalk 项目的关注!我们欢迎社区贡献,让这个项目变得更好。
|
||
|
||
## 🤝 如何贡献
|
||
|
||
### 贡献领域
|
||
|
||
#### ✅ 欢迎贡献的领域
|
||
|
||
- **前端界面优化**
|
||
- React 组件改进
|
||
- UI/UX 优化
|
||
- 响应式设计
|
||
- 无障碍访问性改进
|
||
|
||
- **样式和主题**
|
||
- 新主题色彩方案
|
||
- CSS 动画效果
|
||
- 图标和视觉元素
|
||
- 深色模式优化
|
||
|
||
- **用户体验**
|
||
- 交互流程优化
|
||
- 错误提示改进
|
||
- 加载状态优化
|
||
- 快捷键支持
|
||
|
||
- **文档完善**
|
||
- README 文档
|
||
- 代码注释
|
||
- 使用教程
|
||
- API 文档
|
||
|
||
- **国际化**
|
||
- 多语言支持
|
||
- 本地化适配
|
||
- 文本翻译
|
||
|
||
- **性能优化**
|
||
- 组件渲染优化
|
||
- 内存使用优化
|
||
- 打包体积优化
|
||
|
||
## 📋 贡献流程
|
||
|
||
### 1. 准备工作
|
||
|
||
```bash
|
||
# Fork 项目到你的 GitHub 账号
|
||
# 克隆你的 fork
|
||
git clone https://github.com/ILoveBingLu/miyu.git
|
||
cd miyu
|
||
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 创建新分支
|
||
git checkout -b feature/your-feature-name
|
||
```
|
||
|
||
### 2. 开发环境
|
||
|
||
```bash
|
||
# 启动开发服务器
|
||
npm run dev
|
||
|
||
# 运行类型检查
|
||
npx tsc --noEmit
|
||
|
||
# 运行代码格式化
|
||
npx prettier --write src/
|
||
```
|
||
|
||
### 3. 提交代码
|
||
|
||
```bash
|
||
# 添加修改的文件
|
||
git add .
|
||
|
||
# 提交代码(请使用有意义的提交信息)
|
||
git commit -m "feat: 添加新的主题色彩方案"
|
||
|
||
# 推送到你的 fork
|
||
git push origin feature/your-feature-name
|
||
```
|
||
|
||
### 4. 创建 Pull Request
|
||
|
||
1. 在 GitHub 上打开你的 fork
|
||
2. 点击 "New Pull Request"
|
||
3. 选择目标分支(通常是 `main`)
|
||
4. 填写 PR 描述,说明你的修改内容
|
||
5. 提交 PR 等待审核
|
||
|
||
## 📝 代码规范
|
||
|
||
### TypeScript 规范
|
||
|
||
- 使用 TypeScript 严格模式
|
||
- 为所有函数和变量提供类型注解
|
||
- 使用接口定义复杂对象类型
|
||
- 避免使用 `any` 类型
|
||
|
||
```typescript
|
||
// ✅ 好的示例
|
||
interface UserInfo {
|
||
id: string
|
||
name: string
|
||
avatar?: string
|
||
}
|
||
|
||
const getUserInfo = (userId: string): Promise<UserInfo> => {
|
||
// 实现
|
||
}
|
||
|
||
// ❌ 避免的写法
|
||
const getUserInfo = (userId: any): any => {
|
||
// 实现
|
||
}
|
||
```
|
||
|
||
### React 组件规范
|
||
|
||
- 使用函数组件和 Hooks
|
||
- 组件名使用 PascalCase
|
||
- Props 接口以组件名 + Props 命名
|
||
- 使用 memo 优化性能关键组件
|
||
|
||
```typescript
|
||
// ✅ 好的示例
|
||
interface ChatMessageProps {
|
||
message: string
|
||
timestamp: number
|
||
sender: string
|
||
}
|
||
|
||
const ChatMessage: React.FC<ChatMessageProps> = ({ message, timestamp, sender }) => {
|
||
return (
|
||
<div className="chat-message">
|
||
<span className="sender">{sender}</span>
|
||
<p className="content">{message}</p>
|
||
<time className="timestamp">{new Date(timestamp).toLocaleString()}</time>
|
||
</div>
|
||
)
|
||
}
|
||
|
||
export default React.memo(ChatMessage)
|
||
```
|
||
|
||
### CSS/SCSS 规范
|
||
|
||
- 使用 BEM 命名规范
|
||
- 优先使用 CSS 变量
|
||
- 避免深层嵌套(最多 3 层)
|
||
- 使用语义化的类名
|
||
|
||
```scss
|
||
// ✅ 好的示例
|
||
.chat-message {
|
||
padding: var(--spacing-md);
|
||
border-radius: var(--border-radius);
|
||
|
||
&__sender {
|
||
font-weight: bold;
|
||
color: var(--color-primary);
|
||
}
|
||
|
||
&__content {
|
||
margin: var(--spacing-sm) 0;
|
||
line-height: 1.5;
|
||
}
|
||
|
||
&--highlighted {
|
||
background-color: var(--color-highlight);
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🐛 报告问题
|
||
|
||
### 提交 Issue 前请检查
|
||
|
||
1. 搜索现有 Issues,避免重复提交
|
||
2. 确保问题与开源部分相关
|
||
3. 提供详细的复现步骤
|
||
4. 包含系统环境信息
|
||
|
||
### Issue 模板
|
||
|
||
```markdown
|
||
## 问题描述
|
||
简要描述遇到的问题
|
||
|
||
## 复现步骤
|
||
1. 打开应用
|
||
2. 点击某个按钮
|
||
3. 看到错误信息
|
||
|
||
## 期望行为
|
||
描述你期望发生的情况
|
||
|
||
## 实际行为
|
||
描述实际发生的情况
|
||
|
||
## 环境信息
|
||
- 操作系统: Windows 11
|
||
- Node.js 版本: 18.17.0
|
||
- 应用版本: 1.0.1
|
||
|
||
## 截图
|
||
如果适用,请添加截图来帮助解释问题
|
||
```
|
||
|
||
## 🎯 优先级指南
|
||
|
||
我们特别欢迎以下类型的贡献:
|
||
|
||
### 高优先级
|
||
- 🐛 修复 UI 相关的 bug
|
||
- ♿ 无障碍访问性改进
|
||
- 🌍 国际化和本地化
|
||
- 📱 响应式设计优化
|
||
|
||
### 中优先级
|
||
- ✨ 新的 UI 组件
|
||
- 🎨 主题和样式改进
|
||
- 📖 文档完善
|
||
- 🔧 开发工具改进
|
||
|
||
### 低优先级
|
||
- 🧹 代码重构(需要充分理由)
|
||
- 📦 依赖更新
|
||
- 🎯 性能优化(需要基准测试)
|
||
|
||
## 📞 联系我们
|
||
|
||
如果你有任何问题或建议,可以通过以下方式联系我们:
|
||
|
||
- 🐛 GitHub Issues
|
||
|
||
## 🙏 致谢
|
||
|
||
感谢所有贡献者的努力!你们的贡献让这个项目变得更好。
|
||
|
||
---
|
||
|
||
再次感谢你的贡献!让我们一起打造更好的密语 CipherTalk! |