Inglés | 简体中文 | 繁體中文
Cuando comencé a desarrollar sitios web en Go y a usar gin framework, fue una pena que gin careciera de una función de recarga en vivo. Así que busqué y probé algo nuevo, no parece muy flexible, así que tenía la intención de reescribirlo mejor. Finalmente, nace Air. Además muchas gracias a pilu, ni fresco, ni aire :)
Air es otra utilidad de línea de comandos de recarga en vivo para desarrollar aplicaciones Go. Ejecute air
en el directorio raíz de su proyecto, déjelo en paz y concéntrese en su código.
Nota: Esta herramienta no tiene nada que ver con la implementación en caliente para producción.
Admite campos de configuración de aire como argumentos:
Si desea configurar el comando de compilación y el comando de ejecución, puede usar el siguiente comando sin el archivo de configuración:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api "
Utilice una coma para separar elementos de argumentos que toman una 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)Con go 1.23 o 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
Extraiga esta imagen de 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 >
Si quieres usar Air continuamente como una aplicación normal, puedes crear una función en tu ${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>
es la ruta de su proyecto en el contenedor, por ejemplo: /go/example si desea ingresar al contenedor, agregue --entrypoint=bash.
Uno de mis proyectos se ejecuta en 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
Otro ejemplo:
cd /go/src/github.com/cosmtrek/hub
AIR_PORT=8080 air -c " config.toml "
esto reemplazará $PWD
con el directorio actual, $AIR_PORT
es el puerto donde publicar y $@
es para aceptar argumentos de la aplicación misma, por ejemplo -c
Para escribir menos, puede agregar alias air='~/.air'
a su .bashrc
o .zshrc
.
Primero ingresa a tu proyecto
cd /path/to/your_project
El uso más simple es ejecutar
# firstly find `.air.toml` in current directory, if not found, use defaults
air -c .air.toml
Puede inicializar el archivo de configuración .air.toml
en el directorio actual con la configuración predeterminada ejecutando el siguiente comando.
air init
Después de esto, puede ejecutar el comando air
sin argumentos adicionales y utilizará el archivo .air.toml
para la configuración.
air
Para modificar la configuración, consulte el archivo air_example.toml.
Puede pasar argumentos para ejecutar el binario compilado agregándolos después del comando aéreo.
# Will run ./tmp/main bench
air bench
# Will run ./tmp/main server --port 8080
air server --port 8080
Puede separar los argumentos pasados para el comando aéreo y el binario construido con el 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 los registros.
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!!!
Debería usar para escapar del `' en el contenedor. problema relacionado: #305
#365
[ build ]
cmd = " /usr/bin/true "
Consulte el número 512 para obtener detalles adicionales.
include_dir
, include_ext
o include_file
.</body>
[ proxy ]
enabled = true
proxy_port = < air proxy port>
app_port = < your server port>
Tenga en cuenta que requiere Go 1.16+ ya que uso go mod
para administrar las dependencias.
# 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
Las solicitudes de extracción son bienvenidas.
# 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
Dé las gracias a muchos seguidores. Siempre he estado recordando tu amabilidad.
Licencia pública general GNU v3.0