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ą:
- Wzrost produktywności: Programiści mogą pozostać w strefie bez przerw, ponieważ nie muszą wykonywać ręcznych przebudów.
- Oszczędność czasu: Automatyczne przeładowanie skraca czas oczekiwania na obejrzenie zmian w kodzie w działającej aplikacji.
- Wykrywanie błędów: Natychmiastowe przebudowy i restarty pozwalają programistom szybciej wykrywać i poprawiać błędy.
- 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.