Files
XCDesktop/CONTRIBUTING.md

203 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 贡献指南
感谢你对 XCDesktop 项目的兴趣!我们欢迎任何形式的贡献,包括但不限于:
- 🐛 报告 Bug
- 💡 提出新功能建议
- 📝 完善文档
- 💻 提交代码修复或新功能
- 🔧 改进构建流程
## 开发环境搭建
### 前置要求
- Node.js 18+
- npm 9+
- Git
### 克隆项目
```bash
git clone https://github.com/your-repo/XCDesktop.git
cd XCDesktop
```
### 安装依赖
```bash
npm install
```
### 启动开发服务器
```bash
# 启动前端开发服务器
npm run dev
# 或启动完整 Electron 开发环境(推荐)
npm run electron:dev
```
### 代码检查
```bash
# 运行 ESLint
npm run lint
# 运行 TypeScript 类型检查
npm run check
```
## 代码规范
### 命名规范
- **文件命名**: 使用 kebab-case`file-system.tsx`
- **组件命名**: 使用 PascalCase`FileTree.tsx`
- **函数命名**: 使用 camelCase`useFileTree`
- **常量命名**: 使用 UPPER_SNAKE_CASE
### TypeScript 规范
- 尽量使用明确的类型定义,避免使用 `any`
- 优先使用接口interface而不是类型别名type定义对象结构
- 导出类型时使用 `export type`
### React 规范
- 使用函数组件和 Hooks
- 组件文件以 `.tsx` 为扩展名
- 纯逻辑文件以 `.ts` 为扩展名
### CSS 规范
- 使用 Tailwind CSS 进行样式开发
- 避免直接编写 CSS优先使用 Tailwind 工具类
- 自定义样式放在组件同名的 `.module.css` 文件中
### Git 提交规范
我们使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范:
```
<type>(<scope>): <description>
[optional body]
[optional footer]
```
#### 类型type
| 类型 | 说明 |
|------|------|
| feat | 新功能 |
| fix | Bug 修复 |
| docs | 文档更新 |
| style | 代码格式调整 |
| refactor | 代码重构 |
| perf | 性能优化 |
| test | 测试相关 |
| chore | 构建或辅助工具变动 |
#### 示例
```bash
# 新功能
git commit -m "feat(file-system): 添加文件拖拽功能"
# Bug 修复
git commit -m "fix(editor): 修复数学公式渲染错误"
# 文档更新
git commit -m "docs: 更新 README 安装步骤"
```
## Pull Request 流程
### 创建分支
```bash
# 从主分支创建新分支
git checkout -b feature/your-feature-name
# 或创建修复分支
git checkout -b fix/bug-description
```
### 提交代码
```bash
# 暂存修改
git add .
# 提交修改
git commit -m "feat(module): 添加新功能"
```
### 推送分支
```bash
# 推送到远程仓库
git push origin feature/your-feature-name
```
### 创建 Pull Request
1. 访问项目仓库
2. 点击 "Compare & pull request"
3. 填写 PR 标题和描述
4. 提交 PR
### PR 标题规范
请使用与提交信息相同的格式:
```
feat(file-system): 添加文件搜索功能
fix(editor): 修复保存内容丢失问题
```
## 项目结构概览
```
XCDesktop/
├── src/ # 前端源码
│ ├── components/ # UI 组件
│ ├── contexts/ # React Context
│ ├── hooks/ # 自定义 Hooks
│ ├── lib/ # 工具库
│ ├── modules/ # 功能模块
│ └── pages/ # 页面组件
├── api/ # 后端 API
├── electron/ # Electron 主进程
├── shared/ # 共享类型定义
└── notebook/ # 笔记存储目录
```
### 添加新模块
如需添加新功能模块,请参考以下步骤:
1.`src/modules/` 下创建新模块目录
2.`shared/modules/` 下定义模块配置
3. 在后端 `api/modules/` 下实现 API 接口
4. 使用模块注册系统进行注册
## 问题反馈
如果你发现了 Bug 或有新功能建议,请:
1. 搜索是否已有类似问题
2. 如果没有,创建新的 Issue
3. 使用对应的模板并提供详细信息
## 行为准则
请尊重所有参与项目的开发者,保持友好和专业的交流环境。
---
感谢你的贡献!🎉