Skip to content

命令行工具 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.x

fun 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默认说明
-addr127.0.0.1:7788文档站监听地址
-upstreamhttp://127.0.0.1:8080后端地址(反代目标)
-p.业务 main 包路径
-no-runfalse后端已在别处运行,不自动拉起
-from—从元数据 JSON 读取(静态模式,不启用热更新)
-editsfun-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 连同业务进程一起退出

基于 MIT 许可发布