英语 | 简体中文 | 繁体中文
当我开始用 Go 开发网站并使用 gin 框架时,很遗憾 gin 缺乏实时重载功能。于是就四处寻找,尝试新鲜,似乎不太灵活,所以打算重写一下更好。终于,Air诞生了。另外,非常感谢pilu,没有新鲜空气,没有空气:)
Air 是另一个用于开发 Go 应用程序的实时重新加载命令行实用程序。在项目根目录中运行air
,不要管它,专注于你的代码。
注意:此工具与生产热部署无关。
支持空气配置字段作为参数:
如果你想配置构建命令和运行命令,你可以使用如下命令,无需配置文件:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api "
使用逗号分隔以列表作为输入的参数的项目:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api " --build.exclude_dir " templates,build "
go install
(推荐)使用 go 1.23 或更高版本:
go install github.com/air-verse/air@latest
# binary will be $(go env GOPATH)/bin/air
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s -- -b $( go env GOPATH ) /bin
# or install it into ./bin/
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s
air -v
# binary will be /usr/local/bin/air
curl -sSfL https://goblin.run/github.com/air-verse/air | sh
# to put to a custom path
curl -sSfL https://goblin.run/github.com/air-verse/air | PREFIX=/tmp sh
请拉取此 Docker 映像 cosmtrek/air。
docker/podman run -it --rm
-w " <PROJECT> "
-e " air_wd=<PROJECT> "
-v $( pwd ) : < PROJECT >
-p < PORT > : < APP SERVER PORT >
cosmtrek/air
-c < CONF >
如果你想像普通应用程序一样连续使用 Air,你可以在 ${SHELL}rc 中创建一个函数(Bash、Zsh 等......)
air () {
podman/docker run -it --rm
-w " $PWD " -v " $PWD " : " $PWD "
-p " $AIR_PORT " : " $AIR_PORT "
docker.io/cosmtrek/air " $@ "
}
<PROJECT>
是你的项目在容器中的路径,例如:/go/example 如果你想进入容器,请添加--entrypoint=bash。
我的一个项目在 Docker 中运行:
docker run -it --rm
-w " /go/src/github.com/cosmtrek/hub "
-v $( pwd ) :/go/src/github.com/cosmtrek/hub
-p 9090:9090
cosmtrek/air
另一个例子:
cd /go/src/github.com/cosmtrek/hub
AIR_PORT=8080 air -c " config.toml "
这会将$PWD
替换为当前目录, $AIR_PORT
是发布的端口, $@
是接受应用程序本身的参数,例如 -c
为了减少输入,您可以将alias air='~/.air'
添加到.bashrc
或.zshrc
中。
首先进入你的项目
cd /path/to/your_project
最简单的用法是运行
# firstly find `.air.toml` in current directory, if not found, use defaults
air -c .air.toml
您可以运行以下命令,使用默认设置将.air.toml
配置文件初始化到当前目录。
air init
之后,您可以运行air
命令而不需要额外的参数,它将使用.air.toml
文件进行配置。
air
要修改配置,请参阅air_example.toml 文件。
您可以通过在air命令后添加参数来传递运行构建的二进制文件的参数。
# Will run ./tmp/main bench
air bench
# Will run ./tmp/main server --port 8080
air server --port 8080
您可以使用--
参数分隔为 air 命令传递的参数和构建的二进制文件。
# Will run ./tmp/main -h
air -- -h
# Will run air with custom config and pass -h argument to the built binary
air -c .air.toml -- -h
services :
my-project-with-air :
image : cosmtrek/air
# working_dir value has to be the same of mapped volume
working_dir : /project-package
ports :
- <any>:<any>
environment :
- ENV_A=${ENV_A}
- ENV_B=${ENV_B}
- ENV_C=${ENV_C}
volumes :
- ./project-relative-path/:/project-package/
air -d
打印所有日志。
Dockerfile
# Choose whatever you want, version >= 1.16
FROM golang:1.23-alpine
WORKDIR /app
RUN go install github.com/air-verse/air@latest
COPY go.mod go.sum ./
RUN go mod download
CMD [ "air" , "-c" , ".air.toml" ]
docker-compose.yaml
version : " 3.8 "
services :
web :
build :
context : .
# Correct the path to your Dockerfile
dockerfile : Dockerfile
ports :
- 8080:3000
# Important to bind/mount your codebase dir to /app dir for live reload
volumes :
- ./:/app
export GOPATH= $HOME /xxxxx
export PATH= $PATH : $GOROOT /bin: $GOPATH /bin
export PATH= $PATH : $( go env GOPATH ) /bin # Confirm this line in your .profile and make sure to source the .profile if you add it!!!
应该使用来转义 bin 中的 ''。相关问题:#305
第365章
[ build ]
cmd = " /usr/bin/true "
有关更多详细信息,请参阅问题 #512。
include_dir
、 include_ext
或include_file
中。</body>
标记[ proxy ]
enabled = true
proxy_port = < air proxy port>
app_port = < your server port>
请注意,它需要 Go 1.16+,因为我使用go mod
来管理依赖项。
# Fork this project
# Clone it
mkdir -p $GOPATH /src/github.com/cosmtrek
cd $GOPATH /src/github.com/cosmtrek
git clone [email protected]: < YOUR USERNAME > /air.git
# Install dependencies
cd air
make ci
# Explore it and happy hacking!
make install
欢迎请求请求。
# Checkout to master
git checkout master
# Add the version that needs to be released
git tag v1.xx.x
# Push to remote
git push origin v1.xx.x
# The CI will process and release a new version. Wait about 5 min, and you can fetch the latest version
向众多支持者表示衷心的感谢。我一直记得你的恩情。
GNU 通用公共许可证 v3.0