docs: 开源规范化 — doc comments + 社区文件 + 示例代码 + crates.io 就绪
- 为 core 公开 API 添加完整 doc comments(rustdoc 可用) - 新增 .editorconfig / CONTRIBUTING / CODE_OF_CONDUCT / SECURITY - 新增 Issue 模板(bug + feature)+ PR 模板 - 新增 3 个代码示例(examples/) - 更新 Cargo.toml 元数据(description/repository/keywords/categories/MSRV) - 更新 README + CHANGELOG
This commit is contained in:
+105
@@ -0,0 +1,105 @@
|
||||
# 贡献指南
|
||||
|
||||
感谢你对 QRGen 的关注!这份指南帮助你了解如何参与项目。
|
||||
|
||||
## 项目架构
|
||||
|
||||
QRGen 是 Rust workspace,四层架构:
|
||||
|
||||
| crate | 用途 | 技术栈 |
|
||||
|-------|------|--------|
|
||||
| `qr-core` | 核心算法库 | Rust,纯算法无三方依赖 |
|
||||
| `qrgen` | CLI 命令行 | clap + anyhow |
|
||||
| `qrgen-gui` | 桌面应用 | Tauri 2.x + React 18 + TypeScript |
|
||||
| `qrgen-web` | Web 服务 | axum 0.8 + tokio |
|
||||
|
||||
详细架构见 [CLAUDE.md](CLAUDE.md)。
|
||||
|
||||
## 开发环境
|
||||
|
||||
- **Rust** 1.95+ (`stable-x86_64-pc-windows-gnu` 或 `stable-x86_64-unknown-linux-gnu`)
|
||||
- **Node.js** 22+(仅 GUI 前端需要)
|
||||
- **pnpm**(GUI 前端包管理)
|
||||
|
||||
## 本地构建
|
||||
|
||||
```bash
|
||||
# 克隆
|
||||
git clone git@lhy-git.liuhangyv.top:Serendipity/QRGen.git
|
||||
cd QRGen
|
||||
|
||||
# 安装 GUI 前端依赖
|
||||
cd gui/src-frontend && pnpm install && cd ../..
|
||||
|
||||
# 编译检查
|
||||
cargo check
|
||||
|
||||
# CLI
|
||||
cargo build -p qrgen
|
||||
|
||||
# Web
|
||||
cargo build -p qrgen-web
|
||||
|
||||
# GUI(需要前端依赖)
|
||||
cd gui/src-frontend && pnpm build && cd ../..
|
||||
cargo build -p qrgen-gui
|
||||
```
|
||||
|
||||
## 提交规范
|
||||
|
||||
使用 Conventional Commits 格式:
|
||||
|
||||
```
|
||||
<type>: <简短描述>
|
||||
|
||||
feat: 添加 Logo 图片支持
|
||||
fix: 修复 PNG margin 全黑问题
|
||||
refactor: 提取 fill_module 辅助函数
|
||||
docs: 更新 README 安装说明
|
||||
test: 添加格式信息 roundtrip 测试
|
||||
```
|
||||
|
||||
类型:`feat` `fix` `refactor` `docs` `test` `chore` `perf` `ci`
|
||||
|
||||
## 代码风格
|
||||
|
||||
- **Rust**: `cargo fmt` + `cargo clippy -- -D warnings` 必须通过
|
||||
- **TypeScript**: `pnpm tsc --noEmit` 必须通过(strict 模式)
|
||||
- 注释用中文,标识符用英文
|
||||
|
||||
## 测试
|
||||
|
||||
```bash
|
||||
# 全量测试
|
||||
cargo test # 所有 crate
|
||||
|
||||
# 仅核心库
|
||||
cargo test -p qr-core
|
||||
|
||||
# 特定测试
|
||||
cargo test -p qr-core -- mask # 掩码相关测试
|
||||
|
||||
# 覆盖率
|
||||
cargo tarpaulin --out Html
|
||||
```
|
||||
|
||||
测试覆盖率目标 ≥ 80%。
|
||||
|
||||
## 提交流程
|
||||
|
||||
1. Fork 仓库
|
||||
2. 创建功能分支 (`git checkout -b feat/my-feature`)
|
||||
3. 编码 + 测试(遵循 TDD)
|
||||
4. `cargo fmt` + `cargo clippy -- -D warnings`
|
||||
5. `cargo test` 全部通过
|
||||
6. 提交并 push
|
||||
7. 创建 Pull Request
|
||||
|
||||
## Issue 规范
|
||||
|
||||
- Bug 报告:附重现步骤 + 预期/实际行为
|
||||
- 功能请求:描述使用场景和期望效果
|
||||
|
||||
## 感谢
|
||||
|
||||
所有贡献者将在 [README.md](README.md) 中致谢。
|
||||
Reference in New Issue
Block a user