# 贡献指南

感谢你对 MarkLite 项目的关注！以下是参与贡献的指南。

## 开发环境

1. **前置要求**
   - Node.js >= 18.x
   - npm >= 9.x
   - Windows 10/11 x64

2. **克隆并安装**
   ```bash
   git clone https://gitee.com/thzxx/MarkLite.git
   cd MarkLite
   npm install
   ```

3. **启动开发**
   ```bash
   npm run dev
   ```

## 代码规范

- **TypeScript**: 严格模式，所有函数参数需显式类型标注
- **ESLint**: 提交前确保 `npm run lint` 通过
- **Prettier**: 提交前确保 `npm run format:check` 通过
- **Git Hooks**: pre-commit 自动执行 ESLint + typecheck

## 分支策略

- `main` — 稳定版本
- `dev` — 开发分支
- `feature/*` — 功能分支
- `fix/*` — 修复分支

## 提交规范

使用语义化提交信息：

```
<type>(<scope>): <description>

[optional body]
```

类型（type）:
- `feat`: 新功能
- `fix`: 修复 Bug
- `docs`: 文档变更
- `style`: 代码格式（不影响逻辑）
- `refactor`: 重构
- `perf`: 性能优化
- `test`: 测试相关
- `chore`: 构建/工具链变更

示例：
```
feat(editor): 添加代码折叠功能
fix(tab): 修复关闭标签后焦点丢失问题
perf(markdown): 引入 processor LRU 缓存
```

## Pull Request 流程

1. Fork 仓库并创建功能分支
2. 确保所有检查通过：
   ```bash
   npm run lint        # ESLint
   npm run typecheck   # TypeScript 类型检查
   npm run test        # 单元测试
   ```
3. 编写清晰的 PR 描述，说明变更内容和原因
4. 等待代码审查

## 添加测试

- 测试文件放在 `__tests__/` 目录下，命名为 `*.test.ts` 或 `*.test.tsx`
- 使用 Vitest + React Testing Library
- 至少覆盖 stores、hooks、lib 目录下的核心模块

```bash
# 运行测试
npm run test

# 监听模式
npm run test:watch

# 覆盖率报告
npm run test:coverage
```

## 项目结构

```
src/
├── main/           # 主进程 (Node.js)
├── preload/        # 预加载脚本
├── renderer/       # 渲染进程 (React)
│   ├── components/ # UI 组件
│   ├── stores/     # Zustand 状态管理
│   ├── hooks/      # 自定义 Hooks
│   ├── lib/        # 工具库
│   ├── db/         # IndexedDB 持久化
│   ├── types/      # TypeScript 类型
│   └── styles/     # 全局样式
└── shared/         # 主进程/渲染进程共享
```

## 许可证

贡献的代码将遵循项目的 [MIT 许可证](LICENSE)。
