开发全流程)
comfy-cli 贡献者指南从 Typer 命令架构到 CI 三件套ruff/pytest/e2e开发全流程【免费下载链接】comfy-cliCLI for using ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/comfy-clicomfy-cli 是一款用于安装、运行和扩展 ComfyUI 的开源命令行工具CLI for ComfyUI基于 Python 与 Typer 构建。本文是面向新手贡献者的完整开发指南讲清楚 Typer 命令架构如何组织、本地开发环境如何搭建以及 CI 上强制执行的 ruff / pytest / e2e 三件套检查如何一次跑通帮你少走弯路、快速提交第一个 PR。一、comfy-cli 是什么一句话概括它在终端里替你搞定 ComfyUI 的全生命周期—— 一条命令安装并启动 ComfyUIcomfy install/comfy launch 管理自定义节点安装、快照、二分定位问题节点️ 从 CivitAI / Hugging Face 下载模型☁️ 用--where cloud把工作流路由到 Comfy Cloud无需本地 GPU二、开发环境搭建两步跑通本地最低要求Python 3.10项目以uv为依赖管理核心uv.lock是权威文件。# 克隆仓库 git clone https://gitcode.com/gh_mirrors/co/comfy-cli cd comfy-cli # 安装运行时 开发依赖ruff、pytest、pre-commit 等 uv sync --extra dev uv run comfy --help # 验证入口可用 # 安装提交前钩子commit 时自动跑 ruff lintformat pre-commit install pre-commit 钩子除了 ruff还会做文件卫生检查、pyproject 格式化和 uv lock/export/sync详见 .pre-commit-config.yaml。三、Typer 命令架构一条命令是如何注册的comfy-cli 的所有命令都构建在 Typer 之上架构分三层层位置职责总入口comfy_cli/cmdline.py创建根typer.Typer()应用挂载所有子命令处理 Ctrl-C 与退出码命令目录comfy_cli/command/每个功能域一个子包nodes/、models/、generate/、run/…控制台输出comfy_cli/output/统一用rich渲染支持--json结构化输出想添加一条新命令只需三步在comfy_cli/command/下新建目录例如command/mytool/内含__init__.py与command.py在command.py中定义app typer.Typer()用app.command()装饰函数回到comfy_cli/cmdline.py注册你的子应用。关键约定来自 CONTRIBUTING.md命令参数管理一律用typer控制台输出一律用rich进度条用rich.progress四、CI 三件套提交前必须本地跑通CI 对每个 PR 强制执行三项检查本地提前跑一遍能省掉大量返工ruff check . # ① lint ruff format --check . # ② 格式化 pytest # ③ 单元测试① rufflint 与格式化CI 工作流.github/workflows/ruff_check.yml固定安装ruff 0.15.15并依次执行ruff check和ruff format --diff。本地请安装同一版本避免本地过、CI 挂。配置在pyproject.toml的[tool.ruff]段行宽 120、目标版本 py310启用了 isort 排序I、pyupgradeUP、引号风格Q等规则。② pytest单元测试 覆盖率.github/workflows/pytest.yml在 Python 3.10 上执行uv sync --extra dev --locked # --locked 确保 uv.lock 与 pyproject.toml 一致 uv run --locked --extra dev pytest --covcomfy_cli --cov-reportxml .两个细节值得注意--locked意味着依赖变更必须显式提交 lockfile 更新不能偷偷漂移覆盖率上报 Codecov所以新代码要配测试。测试集中在tests/目录按comfy_cli/源码结构镜像组织。③ e2e跨平台端到端测试改动comfy_cli/**或tests/e2e/**时会额外触发.github/workflows/build-and-test.yml在Linux / Windows / macOS 三平台矩阵上执行真实的comfy install、comfy launch、comfy node操作。E2E 默认关闭需显式开启TEST_E2Etrue pytest tests/e2e/完整环境变量与测试场景说明见 docs/TESTING-e2e.md。五、PR 规范合并前的最后一公里分支策略从main切出特性分支PR 提交到main合并方式为squash提交信息遵循 Conventional Commits按影响域加 scope例如fix(jobs): stream live progress in jobs watch feat(templates): serve stale gallery cache immediately docs: ... test: ... ci: ... chore: ...CHANGELOG用户可见的重要变更需写入 CHANGELOG.md 的## [Unreleased]段落CLA首次贡献者需按 CLA Assistant 机器人的提示签署贡献者协议一个 PR 只做一件事描述对用户可见的影响并关联关闭的 issue六、调试小贴士 在 VSCode 的launch.json中按以下方式启动调试器即可断点调试 CLI 主流程comfy_cli.__main__模块。若同时修改 ComfyUI-Manager可将两个仓库都以 editable 模式安装pip install -e即可在同一个终端里联调comfy与cm-cli。总结comfy-cli 的贡献流程可以浓缩为一句话——理解 Typer 的三层命令架构本地跑通 ruff / pytest / e2e 三件套用规范化的提交信息发起 PR。项目结构清晰、检查严格但完全透明只要顺着 CONTRIBUTING.md 走新手也能顺利迈出开源贡献的第一步。Happy coding! 【免费下载链接】comfy-cliCLI for using ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/comfy-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考