Inglês | 简体中文 | 繁體中文
Quando comecei a desenvolver sites em Go e usar o framework gin, era uma pena que o gin não tivesse uma função de recarga ao vivo. Então procurei e tentei de novo, não parece muito flexível, então pretendia reescrevê-lo melhor. Finalmente, Air nasceu. Além disso, muito obrigado ao pilu, sem frescor, sem ar :)
Air é mais um utilitário de linha de comando de recarga ao vivo para o desenvolvimento de aplicativos Go. Execute air
no diretório raiz do seu projeto, deixe-o como está e concentre-se no seu código.
Nota: Esta ferramenta não tem nada a ver com implantação a quente para produção.
Suporta campos de configuração aérea como argumentos:
Se você deseja configurar o comando build e executar o comando, você pode usar o seguinte comando sem o arquivo de configuração:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api "
Use uma vírgula para separar itens de argumentos que usam uma lista como entrada:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api " --build.exclude_dir " templates,build "
go install
(recomendado)Com go 1.23 ou superior:
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
Por favor, puxe esta imagem 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 >
se quiser usar air continuamente como um aplicativo normal, você pode criar uma função em seu ${SHELL}rc (Bash, Zsh, etc…)
air () {
podman/docker run -it --rm
-w " $PWD " -v " $PWD " : " $PWD "
-p " $AIR_PORT " : " $AIR_PORT "
docker.io/cosmtrek/air " $@ "
}
<PROJECT>
é o caminho do seu projeto no contêiner, por exemplo: /go/example se você deseja entrar no contêiner, adicione --entrypoint=bash.
Um dos meus projetos é executado no 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
Outro exemplo:
cd /go/src/github.com/cosmtrek/hub
AIR_PORT=8080 air -c " config.toml "
isso substituirá $PWD
pelo diretório atual, $AIR_PORT
é a porta onde publicar e $@
é para aceitar argumentos do próprio aplicativo, por exemplo -c
Para menos digitação, você pode adicionar alias air='~/.air'
ao seu .bashrc
ou .zshrc
.
Primeiro entre no seu projeto
cd /path/to/your_project
O uso mais simples é executado
# firstly find `.air.toml` in current directory, if not found, use defaults
air -c .air.toml
Você pode inicializar o arquivo de configuração .air.toml
no diretório atual com as configurações padrão executando o seguinte comando.
air init
Depois disso, você pode simplesmente executar o comando air
sem argumentos adicionais e ele usará o arquivo .air.toml
para configuração.
air
Para modificar a configuração, consulte o arquivo air_example.toml.
Você pode passar argumentos para executar o binário construído adicionando-os após o comando air.
# Will run ./tmp/main bench
air bench
# Will run ./tmp/main server --port 8080
air server --port 8080
Você pode separar os argumentos passados para o comando air e o binário construído com o argumento --
.
# 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
imprime todos os logs.
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!!!
Deveria usar para escapar do `' no lixo. problema relacionado: #305
#365
[ build ]
cmd = " /usr/bin/true "
Consulte a edição nº 512 para obter detalhes adicionais.
include_dir
, include_ext
ou include_file
.</body>
[ proxy ]
enabled = true
proxy_port = < air proxy port>
app_port = < your server port>
Observe que é necessário Go 1.16+, pois eu uso go mod
para gerenciar dependências.
# 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
Solicitações pull são bem-vindas.
# 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
Agradeça imensamente a muitos apoiadores. Sempre me lembrei da sua gentileza.
Licença Pública Geral GNU v3.0