Anglais | 简体中文 | 繁體中文
Lorsque j'ai commencé à développer des sites Web dans Go et à utiliser le framework gin, c'était dommage que gin ne dispose pas d'une fonction de rechargement en direct. J'ai donc cherché et essayé de nouveau, cela ne semble pas très flexible, donc j'avais l'intention de mieux le réécrire. Enfin, Air est né. En plus, super merci à pilu, pas de frais, pas d'air :)
Air est encore un autre utilitaire de ligne de commande de rechargement en direct pour développer des applications Go. Exécutez air
dans le répertoire racine de votre projet, laissez-le tranquille et concentrez-vous sur votre code.
Remarque : Cet outil n'a rien à voir avec le déploiement à chaud pour la production.
Prend en charge les champs de configuration aérienne comme arguments :
Si vous souhaitez configurer la commande build et exécuter la commande, vous pouvez utiliser la commande suivante sans le fichier de configuration :
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api "
Utilisez une virgule pour séparer les éléments des arguments qui prennent une liste en entrée :
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api " --build.exclude_dir " templates,build "
go install
(recommandé)Avec go 1.23 ou supérieur :
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
Veuillez extraire cette image 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 vous souhaitez utiliser air en continu comme une application normale, vous pouvez créer une fonction dans votre ${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>
est le chemin de votre projet dans le conteneur, par exemple : /go/example si vous souhaitez entrer dans le conteneur, veuillez ajouter --entrypoint=bash.
Un de mes projets s'exécute dans 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
Autre exemple :
cd /go/src/github.com/cosmtrek/hub
AIR_PORT=8080 air -c " config.toml "
cela remplacera $PWD
par le répertoire actuel, $AIR_PORT
est le port sur lequel publier et $@
doit accepter les arguments de l'application elle-même, par exemple -c
Pour moins de saisie, vous pouvez ajouter alias air='~/.air'
à votre .bashrc
ou .zshrc
.
Entrez d’abord dans votre projet
cd /path/to/your_project
L'utilisation la plus simple est exécutée
# firstly find `.air.toml` in current directory, if not found, use defaults
air -c .air.toml
Vous pouvez initialiser le fichier de configuration .air.toml
dans le répertoire actuel avec les paramètres par défaut en exécutant la commande suivante.
air init
Après cela, vous pouvez simplement exécuter la commande air
sans arguments supplémentaires, et elle utilisera le fichier .air.toml
pour la configuration.
air
Pour modifier la configuration, reportez-vous au fichier air_example.toml.
Vous pouvez transmettre des arguments pour exécuter le binaire construit en les ajoutant après la commande aérienne.
# Will run ./tmp/main bench
air bench
# Will run ./tmp/main server --port 8080
air server --port 8080
Vous pouvez séparer les arguments passés pour la commande aérienne et le binaire construit avec l'argument --
.
# 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 tous les journaux.
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!!!
Doit utiliser pour échapper au « » dans la corbeille. problème connexe : #305
#365
[ build ]
cmd = " /usr/bin/true "
Reportez-vous au numéro 512 pour plus de détails.
include_dir
, include_ext
ou include_file
.</body>
[ proxy ]
enabled = true
proxy_port = < air proxy port>
app_port = < your server port>
Veuillez noter qu'il nécessite Go 1.16+ puisque j'utilise go mod
pour gérer les dépendances.
# 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
Les demandes de tirage sont les bienvenues.
# 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
Remerciez énormément les nombreux supporters. Je me souviens toujours de votre gentillesse.
Licence publique générale GNU v3.0