Englisch | 简体中文 | 繁體中文
Als ich anfing, Websites in Go zu entwickeln und das Gin-Framework zu verwenden, war es schade, dass Gin keine Funktion zum Live-Neuladen hatte. Also habe ich mich umgesehen und es neu versucht, es scheint nicht sehr flexibel zu sein, also wollte ich es besser umschreiben. Endlich ist Air geboren. Außerdem super danke an Pilu, keine frische, keine Luft :)
Air ist ein weiteres Befehlszeilendienstprogramm zum Live-Neuladen für die Entwicklung von Go-Anwendungen. Führen Sie air
in Ihrem Projektstammverzeichnis aus, lassen Sie es in Ruhe und konzentrieren Sie sich auf Ihren Code.
Hinweis: Dieses Tool hat nichts mit der Hot-Bereitstellung für die Produktion zu tun.
Unterstützen Sie Air-Config-Felder als Argumente:
Wenn Sie den Build-Befehl und den Run-Befehl konfigurieren möchten, können Sie den folgenden Befehl ohne die Konfigurationsdatei verwenden:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api "
Verwenden Sie ein Komma, um Elemente für Argumente zu trennen, die eine Liste als Eingabe verwenden:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api " --build.exclude_dir " templates,build "
go install
(empfohlen)Mit Go 1.23 oder höher:
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
Bitte ziehen Sie dieses Docker-Image 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 >
Wenn Sie Air kontinuierlich wie eine normale App verwenden möchten, können Sie eine Funktion in Ihrem ${SHELL}rc erstellen (Bash, Zsh usw.)
air () {
podman/docker run -it --rm
-w " $PWD " -v " $PWD " : " $PWD "
-p " $AIR_PORT " : " $AIR_PORT "
docker.io/cosmtrek/air " $@ "
}
<PROJECT>
ist Ihr Projektpfad im Container, z. B.: /go/example, wenn Sie den Container betreten möchten, fügen Sie bitte --entrypoint=bash hinzu.
Eines meiner Projekte läuft in 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
Ein weiteres Beispiel:
cd /go/src/github.com/cosmtrek/hub
AIR_PORT=8080 air -c " config.toml "
Dadurch wird $PWD
durch das aktuelle Verzeichnis ersetzt, $AIR_PORT
ist der Port, an dem veröffentlicht werden soll, und $@
akzeptiert Argumente der Anwendung selbst, zum Beispiel -c
Für weniger Tipparbeit können Sie alias air='~/.air'
zu Ihrer .bashrc
oder .zshrc
hinzufügen.
Geben Sie zunächst Ihr Projekt ein
cd /path/to/your_project
Die einfachste Verwendung ist ausgeführt
# firstly find `.air.toml` in current directory, if not found, use defaults
air -c .air.toml
Sie können die Konfigurationsdatei .air.toml
im aktuellen Verzeichnis mit den Standardeinstellungen initialisieren, indem Sie den folgenden Befehl ausführen.
air init
Danach können Sie den Befehl air
einfach ohne zusätzliche Argumente ausführen und er verwendet die Datei .air.toml
für die Konfiguration.
air
Informationen zum Ändern der Konfiguration finden Sie in der Datei air_example.toml.
Sie können Argumente zum Ausführen der erstellten Binärdatei übergeben, indem Sie sie nach dem Befehl „air“ hinzufügen.
# Will run ./tmp/main bench
air bench
# Will run ./tmp/main server --port 8080
air server --port 8080
Sie können die für den Befehl „air“ übergebenen Argumente und die erstellte Binärdatei mit dem Argument --
trennen.
# 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
druckt alle Protokolle.
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!!!
Sollte verwenden, um das „“ im Bin zu maskieren. Verwandtes Problem: #305
#365
[ build ]
cmd = " /usr/bin/true "
Weitere Einzelheiten finden Sie in Ausgabe Nr. 512.
include_dir
, include_ext
oder include_file
befinden.</body>
-Tag verfügt[ proxy ]
enabled = true
proxy_port = < air proxy port>
app_port = < your server port>
Bitte beachten Sie, dass Go 1.16+ erforderlich ist, da ich go mod
zum Verwalten von Abhängigkeiten verwende.
# 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
Pull-Anfragen sind willkommen.
# 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
Vielen Dank an die vielen Unterstützer. Ich habe mich immer an Ihre Freundlichkeit erinnert.
GNU General Public License v3.0