Appearance
text
# Related Code
Makefile - 构建命令
build.py - PyInstaller 配置
pyproject.toml - 项目依赖
.github/workflows/ - CI/CD 流程开发指南
环境准备
依赖工具
| 工具 | 用途 | 安装 |
|---|---|---|
| Python 3.13+ | 运行时 | brew install python@3.13 |
| uv | 包管理器(推荐) | curl -LsSf https://astral.sh/uv/install.sh | sh |
| ruff | 代码检查 | uv tool install ruff |
首次设置
bash
# 克隆仓库
git clone https://github.com/samzong/hf-model-downloader.git
cd hf-model-downloader
# 安装依赖
uv sync
# 验证安装
uv run main.py开发工作流
日常开发
bash
# 运行应用
make dev
# 或
uv run main.py
# 代码检查
make lint
# 自动修复
make lint-fix
# 格式化
make format构建测试
bash
# 构建应用
make build
# 创建 DMG (macOS)
make dmg
# 清理构建产物
make cleanMakefile 命令一览
| 命令 | 说明 |
|---|---|
make help | 显示所有命令 |
make install | 安装依赖 |
make dev | 开发模式运行 |
make lint | 代码检查 |
make lint-fix | 自动修复 |
make format | 代码格式化 |
make build | 构建应用 |
make dmg | 创建 DMG (macOS) |
make clean | 清理构建产物 |
make release-dry-run | 预览下一版本 |
make release | 执行发布 |
代码规范
Ruff 配置
项目使用 ruff 进行代码检查,配置位于 .ruff.toml。
提交规范
使用 Conventional Commits 格式:
<type>(<scope>): <description>
[optional body]类型:
| 类型 | 说明 | 版本影响 |
|---|---|---|
feat | 新功能 | minor |
fix | 修复 | patch |
docs | 文档 | patch |
refactor | 重构 | patch |
perf | 性能 | patch |
test | 测试 | patch |
chore | 杂项 | patch |
测试
E2E 测试
bash
# 运行端到端测试
pytest tests/test_e2e_basic.py -v -s测试内容:
- 下载小型模型/数据集
- 验证双平台功能
- 检查进度回调
构建验证
bash
# 验证构建(不创建 DMG)
make test-build调试技巧
日志级别
默认日志级别为 INFO。需要更详细的日志:
python
import logging
logging.getLogger("huggingface_hub").setLevel(logging.DEBUG)
logging.getLogger("modelscope").setLevel(logging.DEBUG)进程调试
下载进程的输出通过 Pipe 发送。调试时可以在 unified_download_model() 函数中添加 print 语句,会通过 Pipe 传递到主进程。
PyInstaller 调试
bash
# 查看打包详情
pyinstaller --debug=all main.py发布流程
自动发布
推送到 main 分支后,GitHub Actions 自动:
- 检测版本变更(基于 Conventional Commits)
- 更新版本号和 CHANGELOG
- 创建 Git Tag
- 触发多平台构建
- 上传 DMG/EXE 到 Release
- 更新 Homebrew Cask
手动发布
bash
# 预览版本
make release-dry-run
# 执行发布(仅 main 分支)
make release