用 Go 写 Web 的一大痛点就是每次写完 BUG 之后都需要结束原有进程然后重新执行,本打算用 Hammerspoon 实现一个,前几天偶然发现已有类似项目,还是用 Golang 实现,遂食用之。

安装

自然是用 Golang 式的安装方法:

go get -u github.com/cosmtrek/air

下载完成后会在$GOPATH/bin下生成可执行文件,可使用air -v测试是否安装成功。

食用

在项目下执行air便会自动运行,如果提示command not found: air请确保已经把$GOPATH/bin目录加到系统环境变量中。

配置

虽然安装完成后可以直接食用,不过也可以对配置文件进行一些自定义设置。

首先下载文件到项目目录:

# 如果无法下载也可复制内容到本地
wget https://raw.githubusercontent.com/cosmtrek/air/master/air_example.conf

然后用编辑打开:

# 以下仅列出部分配置,完成内容请参考官方对应文件
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format

root = "."                      # 工作目录
tmp_dir = "tmp"                 # 二进制文件保存位置

[build]
cmd = "go run ."                # 执行命令
bin = "tmp/main"                # 二进制文件位置
include_ext = ["go"]            # 监听指定扩展名文件
exclude_dir = ["assets", "tmp"] # 忽略目录
include_dir = []                # 监听目录
exclude_file = []               # 排除文件
log = "air.log"                 # 日志文件,默认保存在 tmp_dir

[log]
time = true                     # 是否显示日志时间

[misc]
clean_on_exit = true            # 退出时删除 tmp 目录

测试后发现,即使把 cmd 由go build改成go run,在每次运行时同样会在当前目录下生成 tmp 目录,如果对这个有洁癖可以在后面跟一个删除命令,当然也可以直接修改源代码。

对了,配置文件名为.air.conf时无需指定配置。

参考