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.