v0.2.0: 全面代码质量优化

- ESLint flat config + Prettier + EditorConfig
- Markdown处理器LRU缓存
- Zustand选择器优化减少重渲染
- CodeMirror Compartment主题热切换
- Preview防抖(150ms) + IndexedDB去抖(500ms)
- 组件拆分: App.tsx 310→104行, Sidebar.tsx 244→90行
- 统一错误处理 errorHandler.ts
- ConfirmDialog替代原生confirm
- LoadingSpinner加载状态
- Toast多条堆叠+类型区分
- 可访问性增强(ARIA属性、键盘导航)
- Vitest测试框架(78个测试用例)
- Git hooks(husky + lint-staged)
- 项目文档(README.md, CONTRIBUTING.md)
This commit is contained in:
thzxx
2026-06-03 22:13:32 +08:00
parent 3cecb0f9eb
commit 7a4e2b0a67
72 changed files with 5103 additions and 894 deletions
+113
View File
@@ -0,0 +1,113 @@
# 贡献指南
感谢你对 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)。