Kapitel 1: Einführung in Live-Reloading

Was ist Live-Reloading?

Live-Reloading ist eine Funktion, die es Ihrer Entwicklungsumgebung ermöglicht, Änderungen in Ihrem Code zu überwachen und Ihre Anwendung automatisch neu zu laden. Wenn Sie eine Datei speichern, erkennt das Live-Reload-Tool die Änderung, erstellt die Anwendung neu und startet sie neu. Dadurch ersparen Sie sich den manuellen Prozess, den Server anzuhalten, die Anwendung neu zu erstellen und sie nach jeder Änderung erneut zu starten.

Vorteile des Live-Reloadins für die Go-Entwicklung

Live-Reloading kann den Entwicklungsprozess signifikant beschleunigen. Für Go-Entwickler, die daran gewöhnt sind, ihren Code zu kompilieren, bevor sie ihn ausführen, bedeutet Live-Reloading eine verbesserte Arbeitsablauf mit unmittelbarem Feedback. Die Vorteile sind:

  1. Gesteigerte Produktivität: Entwickler bleiben ohne Unterbrechung im Fluss, da sie keine manuellen Neuerstellungen durchführen müssen.
  2. Zeitersparnis: Live-Reloading verringert die Umlaufzeit, um Codeänderungen in der laufenden Anwendung zu sehen.
  3. Fehlererkennung: Sofortige Neuerstellungen und Neustarts ermöglichen es Entwicklern, Fehler schneller zu erkennen und zu korrigieren.
  4. Optimierter Arbeitsablauf: Integriert sich nahtlos in den Entwicklungsprozess und macht ihn reibungsloser und effizienter.

Kapitel 2: Was ist Air?

Air ist ein Kommandozeilen-Hilfsprogramm, das Live-Reloading-Funktionen für Go-Anwendungen bietet. Es überwacht Änderungen im Quellcode automatisch und erstellt und startet Ihre Go-Anwendung neu. Das bedeutet, dass Sie sich mehr auf die Entwicklung von Funktionen konzentrieren können und weniger auf repetitive Aufgaben.

Funktionen

Air bietet eine Reihe von Funktionen, die für eine moderne Go-Entwicklungsumgebung geeignet sind:

  • Automatische Neuerstellungen: Erkennt Dateiänderungen und löst Neuerstellungen aus.
  • Anpassbare Build-Befehle: Ermöglicht es Ihnen, die Build-Befehle an Ihre Projektanforderungen anzupassen.
  • Ausschluss von Verzeichnissen: Ermöglicht es Ihnen, Verzeichnisse aus der Überwachung auszuschließen.
  • Unterstützung für neue Verzeichnisse: Kann neue Verzeichnisse überwachen, die nach dem Start von Air hinzugefügt wurden.
  • Bunte und lesbare Protokolle: Erhöht die Lesbarkeit der Ausgabeprotokolle durch Farbcodierung.
  • CLI-Argumente: Konfigurationsfelder können direkt über Befehlszeilenargumente für schnelle Anpassungen festgelegt werden.

Eine vollständige Liste der Funktionen und Möglichkeiten von Air finden Sie in den bereitgestellten Entwicklerinformationen.

Kapitel 3: Installation von air

3.1 Installation über go install

Um Air mit der Go-Toolchain Version 1.18 oder höher zu installieren:

go install github.com/cosmtrek/air@latest

Dadurch wird air in Ihrem GOPATH/bin verfügbar gemacht.

3.2 Verwendung des install.sh-Skripts

Eine weitere Methode ist durch ein bereitgestelltes Installations-Skript:

curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

Nach der Installation überprüfen Sie sie, indem Sie Folgendes ausführen:

air -v

3.3 Spezielle Installationen (Docker/Podman und benutzerdefinierter Pfad)

Für diejenigen, die Docker oder Podman verwenden, gibt es eine vereinfachte Möglichkeit, Air einzubeziehen:

docker run -it --rm \
    -w "/pfad/zum/projekt" \
    -v $(pwd):/pfad/zum/projekt \
    -p port:port \
    cosmtrek/air

Ersetzen Sie /pfad/zum/projekt durch den Pfad Ihres Projekts und port:port durch die gewünschte Portzuordnung.

Alternativ, für eine spezifische Pfadinstallation:

curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/benutzerdefinierter/pfad sh

Kapitel 4: Konfiguration von air für Ihr Go-Projekt

4.1 Verständnis der .air.toml-Konfiguration

.air.toml ist die Konfigurationsdatei für Air. Sie ermöglicht es Ihnen, Einstellungen im Zusammenhang mit dem Build-Prozess, der Verzeichnisüberwachung und der Protokollausgabe festzulegen. Hier ist ein kurzer Überblick über wichtige Abschnitte:

  • root: Legt das Arbeitsverzeichnis für Air fest.
  • build: Enthält buildbezogene Einstellungen wie Befehle, die vor/nach dem Build ausgeführt werden, und den Hauptbuildbefehl.
  • tmp_dir: Das Verzeichnis, in dem temporäre Build-Dateien gespeichert werden.
  • log: Konfiguriert die Einstellungen der Protokolldatei.
  • color: Passt die Farbe jeder Teilkomponente der Protokollaufgabe an.

4.2 Generieren und Anpassen der Konfigurationsdatei

Um eine Standardkonfigurationsdatei .air.toml zu generieren, führen Sie den Befehl aus:

air init

Dadurch wird eine .air.toml-Datei mit den Standard-Einstellungen in Ihrem aktuellen Verzeichnis erstellt. Anschließend können Sie diese anpassen, um sie an die Anforderungen Ihres Projekts anzupassen. Zur Referenz können Sie die bereitgestellte air_example.toml-Datei verwenden.

4.3 Konfiguration mit CLI-Argumenten überschreiben

Für schnelle Tests oder kleinere Änderungen können Sie die Konfiguration in der Datei .air.toml durch Übergeben von CLI-Argumenten überschreiben. Zum Beispiel:

air --build.cmd "go build -o myapp" --build.bin "./myapp"

Diese Flexibilität ermöglicht es Ihnen, das Verhalten von Air einfach anzupassen, ohne die Konfigurationsdatei zu ändern.

Kapitel 5: Ausführen von air in Ihrer Entwicklungsumgebung

6.1 Starten von air in Ihrem Projekt

Um mit air in Ihrem Projekt zu starten, navigieren Sie im Terminal zum Stammverzeichnis Ihres Projekts und führen Sie den Befehl air aus. Wenn eine Konfigurationsdatei .air.toml vorhanden ist, verwendet air diese automatisch. Andernfalls verwendet es die Standardeinstellungen.

cd /Pfad/zum/Ihr_Projekt
air

Tipp: Falls Sie Berechtigungsprobleme mit der air-Ausführbaren haben, stellen Sie sicher, dass diese die erforderlichen Ausführungsberechtigungen hat (chmod +x $(go env GOPATH)/bin/air).

6.2 Anpassen von Build- und Ausführungsbefehlen mit air

Sie können die Build- und Ausführungsbefehle, die von air verwendet werden, anpassen, indem Sie die Konfigurationsdatei .air.toml bearbeiten, speziell im Abschnitt [build]. Zum Beispiel, um den Build-Befehl zu ändern und eine andere Binärdatei anzugeben:

[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"

Für komplexere Build-Anforderungen ermöglichen Ihnen die Arrays pre_cmd und post_cmd in der Konfigurationsdatei, Befehle vor und nach dem Build-Prozess entsprechend auszuführen.

Hinweis: Ein vollständiges Beispiel der Air-Konfiguration

6.3 Ausschließen von Verzeichnissen und Beobachten von Änderungen

air ermöglicht es Ihnen auch, Verzeichnisse von der Beobachtung von Änderungen auszuschließen, was für Verzeichnisse, die Assets oder Abhängigkeiten enthalten und keine Neukompilierung auslösen müssen, hilfreich sein kann.

Um dies zu konfigurieren, aktualisieren Sie das Feld exclude_dir in der .air.toml-Datei:

[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]

Sie können auch zusätzliche Verzeichnisse mit include_dir einbeziehen oder bestimmte Dateierweiterungen mit include_ext beobachten.

Kapitel 6: Erweiterte Nutzung

6.1 Einrichten von air mit Docker-Containern

Die Verwendung von air innerhalb eines Docker-Containers kann Ihre Entwicklungsumgebung optimieren, insbesondere wenn Sie mit Teams arbeiten. Um air in Ihre Docker-Umgebung einzubeziehen, aktualisieren Sie Ihr Dockerfile, um air zu installieren und Ihre .air.toml in den Container zu kopieren:

FROM golang:1.18-alpine AS builder

RUN go install github.com/cosmtrek/air@latest

WORKDIR /app

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .

CMD ["air", "-c", ".air.toml"]

6.3 Verwendung von air in einer Docker-Compose-Umgebung

Um air in einen von docker-compose verwalteten Dienst zu integrieren, definieren Sie einen Dienst in Ihrer docker-compose.yaml-Datei:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "808:808"
    volumes:
      - .:/app
    command: ["air", "-c", ".air.toml"]

Stellen Sie sicher, dass die volumes-Direktive Ihr Projektverzeichnis korrekt auf das Arbeitsverzeichnis im Container abbildet, damit air Dateiänderungen erkennen kann.

Kapitel 7: Häufige Fehlerbehebung und FAQs

7.1 Beheben von Befehl nicht gefunden: air

Wenn Sie einen Fehler Befehl nicht gefunden: air feststellen, bedeutet dies in der Regel, dass die air-Binärdatei nicht im PATH Ihres Systems enthalten ist. Um dies zu beheben, fügen Sie den Pfad zu den Go-Binärdateien Ihrer Umgebungsvariablen PATH hinzu:

export PATH=$PATH:$(go env GOPATH)/bin

7.2 Probleme in WSL-Umgebungen

In einer Windows Subsystem for Linux (WSL)-Umgebung sollten Sie sicherstellen, dass Sie spezielle Zeichen in Ihrer .air.toml escapen. Verwenden Sie beispielsweise \\, um Backslashes in Dateipfaden zu escapen.

7.3 Tipps zur heißen Kompilierung ohne Ausführen der Binärdatei

Wenn Sie möchten, dass air Ihre Go-Anwendung kompiliert, ohne sie auszuführen, setzen Sie das cmd im [build]-Abschnitt Ihrer .air.toml auf einen Nichtausführungsbefehl (z. B. /bin/true auf Unix-basierten Systemen):

[build]
cmd = "/bin/true"

Durch dieses Vorgehen beobachtet air weiterhin Dateiänderungen und löst den Kompilierungsvorgang aus, ohne jedoch zu versuchen, die resultierende Binärdatei auszuführen.