命令行工具 fun-cli
fun-cli 是 fun 框架的配套工具链:代码生成、热更新开发循环、API 文档站三合一。 独立仓库:github.com/cyi-cc/fun-cli。
安装
bash
go install github.com/cyi-cc/fun-cli@latest
fun -v # fun-cli 1.x.xfun new — 项目脚手架
bash
fun new myapp # 生成 go.mod + hello world 示例服务
fun new github.com/me/myapp # 模块路径形式,目录取末段
fun new myapp -local ../fun # replace 指向本地 fun 源码(离线/未发布版本)
fun new myapp -port 9000 # 示例服务端口(默认 18080)产物:go.mod、main.go(HelloSvc.Say 示例)、README.md、.gitignore; 自动 go mod tidy 后 go run . 即启动,fun docs 可直接在线调测。
fun gen — 代码生成
在业务模块根目录执行即可,自动扫描 BindService/BindServiceForGen 调用采集元数据, 生成 TS / Go 客户端(产物与框架内置 GenCode 一致):
bash
fun gen ts -o frontend/src/api # 只生成 TS
fun gen go -o internal/apiclient # 只生成 Go
fun gen # ts + go 到 ./gen| flag | 默认 | 说明 |
|---|---|---|
-o | ./gen | 输出目录(会被清空重建) |
-p | . | 业务模块路径 |
-from | — | 跳过采集,直接读元数据 JSON |
免写 cmd/gen
fun gen 自动完成「扫 BindService → 注入采集辅助测试 → 执行 → 解析产物」全流程, 不再需要手写 go run ./cmd/gen(手动方式与产物结构见代码生成)。
fun docs — API 文档站
bash
fun docs # 采集元数据 + 编译拉起后端 + 起文档站(默认 :7788)- 热更新:监听
.go/go.mod/go.sum,自动重采元数据、重编译重启后端,页面检测版本变化自动刷新 - 服务/方法树 + 搜索(
/快速聚焦);参数表单(枚举下拉、嵌套 DTO、可空标注、类型树展开) - 说明可编辑:方法与字段备注自动保存到
fun-docs-edits.json - 分享深链:标题旁一键复制
#服务.方法?req=...,自带请求体,打开即还原 - State 键值编辑(存 localStorage)、一键发送、响应语法高亮;流式方法实时展示 NDJSON 行
| flag | 默认 | 说明 |
|---|---|---|
-addr | 127.0.0.1:7788 | 文档站监听地址 |
-upstream | http://127.0.0.1:8080 | 后端地址(反代目标) |
-p | . | 业务 main 包路径 |
-no-run | false | 后端已在别处运行,不自动拉起 |
-from | — | 从元数据 JSON 读取(静态模式,不启用热更新) |
-edits | fun-docs-edits.json | 说明编辑存档文件(启动自动创建) |
fun run — 热更新开发循环
bash
fun run -p ./cmd/server
fun run -- -port 18090 # -- 后为业务程序参数- 400ms 轮询
.go/go.mod/go.sum变更,300ms 静默期合并编辑器的多次写盘 - 先编译成功再切换进程——编译失败保留旧进程继续跑,不会砸掉在跑的服务
- 杀整个进程组,业务 fork 的 worker 不残留;Ctrl+C 连同业务进程一起退出