Rozdział 1: Wprowadzenie do automatycznego przeładowania (Live Reloading)

Czym jest automatyczne przeładowanie?

Automatyczne przeładowanie to funkcja, która umożliwia środowisku programistycznemu obserwowanie zmian w kodzie i automatyczne przeładowanie aplikacji. Po zapisaniu pliku narzędzie do automatycznego przeładowania wykrywa zmianę, przebudowuje aplikację i uruchamia ją. Oznacza to, że oszczędza to użytkownikowi ręcznego zatrzymywania serwera, przebudowywania aplikacji i ponownego jej uruchamiania po każdej zmianie.

Korzyści z automatycznego przeładowania dla rozwoju w języku Go

Automatyczne przeładowanie może znacząco przyspieszyć proces rozwoju. Dla programistów Go, którzy są przyzwyczajeni do kompilowania swojego kodu przed uruchomieniem go, automatyczne przeładowanie oznacza ulepszony workflow z natychmiastową informacją zwrotną. Korzyści obejmują:

  1. Wzrost produktywności: Programiści mogą pozostać w strefie bez przerw, ponieważ nie muszą wykonywać ręcznych przebudów.
  2. Oszczędność czasu: Automatyczne przeładowanie skraca czas oczekiwania na obejrzenie zmian w kodzie w działającej aplikacji.
  3. Wykrywanie błędów: Natychmiastowe przebudowy i restarty pozwalają programistom szybciej wykrywać i poprawiać błędy.
  4. Ujednolicony workflow: Doskonale integruje się w proces rozwojowy, sprawiając, że jest on bardziej płynny i wydajny.

Rozdział 2: Co to jest Air?

Air to narzędzie wiersza poleceń zaprojektowane do zapewnienia możliwości automatycznego przeładowania dla aplikacji Go. Monitoruje zmiany w kodzie źródłowym i automatycznie przebudowuje oraz restartuje aplikację Go. Oznacza to, że możesz skupić się bardziej na tworzeniu funkcji, a mniej na zadaniach powtarzalnych.

Funkcje

Air oferuje szereg funkcji odpowiednich dla nowoczesnego środowiska rozwoju w języku Go:

  • Automatyczne przebudowy: Wykrywa zmiany plików i uruchamia przebudowę.
  • Dostosowane polecenia budowania: Pozwala dostosować polecenia budowania do potrzeb projektu.
  • Wykluczenie katalogów: Pozwala określić katalogi, które nie będą monitorowane.
  • Wsparcie dla nowych katalogów: Może monitorować nowo dodane katalogi po uruchomieniu Air.
  • Kolorowe i czytelne dzienniki: Poprawia czytelność dzienników wyjścia za pomocą kodowania kolorów.
  • Argumenty CLI: Pola konfiguracji można ustawić bezpośrednio za pomocą argumentów wiersza poleceń, w celu szybkich korekt.

Odniesienie do udostępnionego kontekstu programisty dla pełnej listy funkcji i możliwości dostępnych w Air.

Rozdział 3: Instalacja air

3.1 Instalacja za pomocą go install

Aby zainstalować Air za pomocą narzędzi Go w wersji 1.18 lub wyższej:

go install github.com/cosmtrek/air@latest

Spowoduje to dostępność air w twoim GOPATH/bin.

3.2 Użycie skryptu install.sh

Inną metodą jest użycie dostarczonego skryptu instalacyjnego:

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

Po instalacji, zatwierdź to, wykonując:

air -v

3.3 Specjalne instalacje (Docker/Podman i niestandardowa ścieżka)

Dla osób korzystających z Docker lub Podman istnieje uproszczony sposób uwzględnienia Air:

docker run -it --rm \
    -w "/ścieżka/do/projektu" \
    -v $(pwd):/ścieżka/do/projektu \
    -p port:port \
    cosmtrek/air

Należy zastąpić /ścieżka/do/projektu ścieżką do projektu oraz port:port żądanym mapowaniem portów.

Alternatywnie, dla instalacji w określonej ścieżce:

curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/niestandardowa/ścieżka sh

Rozdział 4: Konfigurowanie air dla projektu Go

4.1 Zrozumienie konfiguracji .air.toml

.air.toml jest plikiem konfiguracyjnym dla Air. Pozwala określić ustawienia dotyczące procesu budowy, monitorowania katalogów i wyjścia dziennika. Oto krótki przegląd kluczowych sekcji:

  • root: Ustawia katalog roboczy dla Air.
  • build: Zawiera ustawienia związane z budową, takie jak polecenia do wykonania przed/po budowaniu oraz główne polecenie budowy.
  • tmp_dir: Katalog, w którym przechowywane są tymczasowe pliki budowy.
  • log: Konfiguruje ustawienia pliku dziennika.
  • color: Dostosowuje kolor każdej części wyjścia dziennika.

4.2 Generowanie i Modyfikowanie pliku konfiguracyjnego

Aby wygenerować domyślny plik konfiguracyjny .air.toml, użyj polecenia:

air init

Spowoduje to utworzenie pliku .air.toml z domyślnymi ustawieniami w bieżącym katalogu. Następnie możesz go zmodyfikować, aby dostosować do wymagań projektu. Dla odniesienia, możesz skonsultować się z air_example.toml dostarczonym w kontekście.

4.3 Nadpisywanie konfiguracji za pomocą argumentów CLI

Dla szybkich testów lub drobnych zmian, możesz nadpisywać konfigurację w pliku .air.toml, przekazując argumenty CLI. Na przykład:

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

Ta elastyczność pozwala łatwo dostosować zachowanie Air bez konieczności zmiany pliku konfiguracyjnego.

Rozdział 5: Uruchamianie air w środowisku deweloperskim

6.1 Uruchamianie air w Twoim Projekcie

Aby rozpocząć pracę z air w swoim projekcie, przejdź do katalogu głównego swojego projektu w terminalu i wykonaj polecenie air. Jeśli plik konfiguracyjny .air.toml istnieje, air automatycznie go użyje. W przeciwnym razie zostaną użyte domyślne ustawienia.

cd /ścieżka/do/twojego_projektu
air

Wskazówka: Jeśli napotkasz problemy z uprawnieniami dotyczącymi pliku wykonywalnego air, upewnij się, że ma odpowiednie uprawnienia do wykonania (chmod +x $(go env GOPATH)/bin/air).

6.2 Dostosowywanie poleceń budowania i uruchamiania za pomocą air

Możesz dostosować polecenia budowania i uruchamiania używane przez air, modyfikując plik konfiguracyjny .air.toml, w szczególności w sekcji [build]. Na przykład, aby zmienić polecenie budowania i określić inny plik binarny:

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

Dla bardziej złożonych wymagań dotyczących budowy, tablice pre_cmd i post_cmd w pliku konfiguracyjnym umożliwiają wykonanie poleceń przed i po procesie budowania, odpowiednio.

Wskazówki: Pełny przykład konfiguracji air

6.3 Wykluczanie katalogów i śledzenie zmian

air pozwala także wykluczać katalogi z obserwacji zmian, co może być przydatne dla katalogów zawierających zasoby lub zależności, które nie powinny powodować ponownej kompilacji.

Aby to skonfigurować, zaktualizuj pole exclude_dir w pliku .air.toml:

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

Możesz także nakazać air dołączanie dodatkowych katalogów za pomocą include_dir lub obserwowanie określonych rozszerzeń plików za pomocą include_ext.

Rozdział 6: Zaawansowane Użycie

6.1 Konfiguracja air z Kontenerami Docker

Użycie air wewnątrz kontenera Docker może zoptymalizować konfigurację deweloperską, zwłaszcza przy pracy zespołowej. Aby włączyć air do swojego środowiska Docker, zaktualizuj swój plik Dockerfile, aby zainstalować air i skopiować swój plik .air.toml do kontenera:

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 Użycie air w środowisku Docker-compose

Aby zintegrować air do usługi zarządzanej przez docker-compose, zdefiniuj usługę w pliku docker-compose.yaml:

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

Upewnij się, że dyrektywa volumes poprawnie mapuje katalog projektu do katalogu roboczego w kontenerze, aby air mógł wykrywać zmiany plików.

Rozdział 7: Rozwiązywanie Problemów i Najczęstsze Pytania

7.1 Naprawa błędu command not found: air

Jeśli napotkasz błąd command not found: air, zazwyczaj oznacza to, że plik binarny air nie znajduje się w zmiennej PATH systemu. Aby to naprawić, dodaj ścieżkę do binariów Go do zmiennej środowiskowej PATH:

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

7.2 Problemy w środowiskach WSL

W środowisku Windows Subsystem for Linux (WSL) upewnij się, że unikasz znaków specjalnych w pliku .air.toml. Na przykład, użyj \\ aby uniknąć konfliktu z ukośnikami w ścieżkach plików.

7.3 Wskazówki dotyczące gorącej kompilacji bez uruchamiania pliku binarnego

Jeśli chcesz, aby air skompilował Twoją aplikację Go bez jej uruchamiania, ustaw cmd w sekcji [build] w pliku .air.toml na polecenie bez działania (na przykład /bin/true w systemach opartych na Unix):

[build]
cmd = "/bin/true"

Dzięki temu air nadal będzie obserwował zmiany plików i wywoływał proces kompilacji, ale nie będzie próbował wykonać wynikowego pliku binarnego.