感谢你考虑为 CMTools 项目做出贡献!本指南旨在帮助你了解如何参与项目开发。
CMTools 是一个基于 Tauri 2.0 + Vue 3 + TypeScript 构建的色谱数据处理桌面应用。核心特点是采用外部工具驱动架构:通过 Rust 后端调用嵌入的命令行工具来实现数据处理功能。
技术栈:
- 前端:Vue 3.5 + TypeScript 5.9 + Vite 7.3 + Tailwind CSS 4.2
- 后端:Rust (Edition 2024) + Tauri 2.10 + Tokio 1.0
-
Fork 本仓库
-
Clone 你的 fork:
git clone https://github.com/YOUR_USERNAME/cmtools.git cd cmtools -
安装依赖:
npm install
-
启动开发模式:
npm run tauri dev
-
运行测试:
# Rust 后端测试 cd src-tauri && cargo test # 前端类型检查 npm run build
在提交 Bug 报告前,请先:
- 查看 现有 Issues 是否已有相同问题
- 确认问题在最新版本中仍然存在
- 收集相关信息(操作系统、版本号、复现步骤)
创建 Issue 时请使用 Bug Report 模板,并尽可能提供:
- 清晰的标题
- 详细的复现步骤
- 预期行为与实际行为
- 相关日志或截图
欢迎提出功能建议!请:
- 查看现有 Issues 确认建议未被提出
- 使用 Feature Request 模板创建 Issue
- 说明使用场景和期望的解决方案
在功能被接受前,建议先在 Issue 中讨论。
我们采用 GitHub Flow 工作流:
-
Fork 仓库(仅外部贡献者)
-
创建分支:
git checkout -b feature/your-feature-name
或:
git checkout -b fix/issue-123
-
进行修改并测试
-
格式化代码:
# Rust cd src-tauri && cargo fmt
# 前端 npm run build -
提交更改:
git add . git commit -m "feat: add your feature description"
-
推送到远程:
git push origin feature/your-feature-name
-
创建 Pull Request
- 使用单引号(
'string'而非"string") - 使用 Composition API 和
<script setup>语法 - 多行结构使用逗号分隔,最后加上逗号
- 行尾不留空格
- 注释使用中文
- 遵循
cargo fmt的官方格式化规则 - 使用
cargo clippy进行代码质量检查 - 注释使用中文
- 优先使用
Result类型进行错误传播
-
cargo fmt格式化 Rust 代码 -
cargo clippy无警告 -
cargo test所有测试通过 -
npm run build前端类型检查通过 - 代码符合项目规范
我们遵循 Conventional Commits 规范:
<type>(<scope>): <description>
[optional body]
[optional footer]
feat: 新功能fix: 错误修复docs: 文档更新refactor: 代码重构(不修复 bug 或添加功能)style: 代码格式调整(不影响代码运行)test: 添加或更新测试chore: 构建过程或辅助工具变动
feat(analytics): 添加 PostHog 分析集成
- 启用 cookieless 模式
- 实现离线事件队列
- 添加用户授权开关
Closes #123
fix(process): 修复 Windows 7 兼容性问题
修复在 Windows 7 系统上启动时崩溃的问题
Fixes #456
- 创建 Pull Request 后,维护者会进行代码审查
- 可能需要根据反馈进行修改
- 审核通过后,PR 会被合并到主分支
- 下一个版本发布时,你的贡献将随新版本一起发布
创建 PR 时,请确保:
- PR 描述清晰说明变更内容
- 遵循 Conventional Commits 规范
- 已通过所有测试
- 代码符合项目规范
- 相关 Issue 已链接
本项目采用 MIT License。提交代码即表示你同意将你的贡献在 MIT License 下授权。
如有任何问题,可以:
感谢你的贡献!