10.2 CLI 命令行使用
概述
CLI 入口 cmd/generator:go run ./cmd/generator -tables "表名|注释"。支持预览(-preview)与批量统计(-batch),读取同一份 config.yaml,产出与 HTTP 入口完全一致。
命令格式
sh
# 一键生成(文件 + 菜单 + 字典 + 路由,全部幂等)
go run ./cmd/generator -tables "goframe_example|案例演示表"
# 多表(逗号分隔)
go run ./cmd/generator -tables "goframe_example|案例演示表,goframe_file_template|文件模板"
# 仅预览(不落盘,打印文件清单)
go run ./cmd/generator -tables "goframe_example|案例演示表" -preview
# 批量统计(逐表输出生成/跳过/覆盖/失败计数)
go run ./cmd/generator -tables "goframe_example|案例演示表" -batch-tables 格式:"表名|表注释"——注释可省略(| 后内容被忽略);表注释用于模块中文名(日志标题/字典名)。
执行流程(CLI 侧)
text
1. 读取 manifest/config/config.yaml(generator.* 配置)
2. 空白 import internal/logic → 全部服务 init 注册
3. 调用 service.Generator().Preview / Generate / BatchGenerate
——与 HTTP 入口同一套核心逻辑
4. 输出分组结果:
+ 生成(Generated) - 跳过(Skipped) * 覆盖(Overwritten) ! 失败(Failed)
5. 提示:"下一步: go build ./... 并重启服务"生成后必做
sh
go build ./... && ./bin/admin-server.exe # 编译并重启(init 注册/路由生效)然后:
text
1. 登录 → 系统管理 → 角色管理 → 为角色勾选新模块权限节点
2. 访问新菜单验证增删改查
3. 租户级新表:把表名加入 internal/model/hooks 的 tenantTables(重启生效)CLI 与 HTTP 的选择
| 场景 | 推荐 |
|---|---|
| 批量生成多表 | CLI(命令行批量更顺手) |
| 团队协作/远程环境 | HTTP 管理页(可视化预览) |
| CI 流水线 | CLI |
| 预览确认再生成 | 两者皆可(-preview / preview 接口) |
常见问题
| 症状 | 原因 |
|---|---|
unknown table | 表不存在或库连接错(查 config.yaml database) |
| 注释/枚举缺失 | 非 MySQL 库内省不到注释——建议 MySQL 上生成或人工补注释 |
| 提示"路由已存在" | registerRouter 幂等——正常(router.go 已含该注册行) |
| 生成后编译失败 | gofmt 失败会报错中断;查输出 Failed 项 |
| CLI panic 注册冲突 | RegisterJobHandler 重名等 init 冲突——查 internal/task |