英語 | 簡體中文 | 繁體中文
當我開始用 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