air可实现gin项目保存即编译、自动重启:需正确安装air-verse/air版本,确保.build.cmd与build.bin路径严格一致,显式配置include_ext监听非go文件,并设置delay=1000防构建冲突。

直接用 air 就能实现 Gin 项目保存即编译、自动重启,但多数人卡在配置不对或路径没生效上——核心就三点:装对版本、.air.toml 里 build.cmd 和 build.bin 必须一致、改了模板或 YAML 文件得手动加监听后缀。
安装 air 并确认命令可用
执行 go install github.com/air-verse/air@latest 安装——注意不是旧地址 cosmtrek/air,后者已归档,继续用会报 command not found: air 或模块解析失败。装完运行 air -v 验证;如果提示找不到命令,说明 $GOPATH/bin 没进 PATH,macOS 用户需在 ~/.zshrc 补一句 export PATH=$PATH:$GOPATH/bin 并重载 shell。
生成 .air.toml 后必须改 build.cmd 和 build.bin
进项目根目录运行 air init 生成默认配置,然后打开 .air.toml,找到 [build] 区块。这里最容易出错:cmd 和 bin 值必须严格对应,否则 Air 会编译成功却启动失败:
cmd = "go build -o ./tmp/main ."bin = "./tmp/main"
不能写成 bin = "tmp/main"(缺 ./),也不能把 cmd 改成 go run .(Air 不支持直接运行源码)。
监听非 Go 文件要显式声明 include_ext
Gin 项目常含 config.yaml、templates/ 下的 HTML 或 .tpl 文件,但默认 air 只监听 .go。不加配置的话,改了配置或页面,服务完全无反应。必须在 [watch] 下补全:
[watch] include_ext = ["go", "yaml", "yml", "html", "tpl"]
Windows 用户还需注意:若用 set 设置环境变量,build.cmd 中的命令要改成 Windows 可识别格式,比如 set APP_ENV=dev && set APP_USER=air && ./tmp/main.exe。
delay = 1000 是防构建冲突的硬性要求
连续快速保存(比如 Ctrl+S 多次)时,如果没有延迟控制,air 可能触发多次构建,导致 ./tmp/main 被反复覆盖、启动失败。必须在 [build] 下加:
delay = 1000
这个值单位是毫秒,设太小(如 100)仍可能撞上构建竞争,设太大(如 5000)又拖慢响应。1000 是实测平衡点。
真正容易被忽略的是:Gin 自身不提供热重载能力,它只是个 HTTP 框架;所有“保存即生效”逻辑都靠 air 的文件监听 + 进程管理完成,所以任何配置偏差都会让整个流程静默失败——不是报错,而是“改了没反应”,得回头逐项核对 build.bin 路径、include_ext、delay 这三个点。











