Capitolo 1: Introduzione al ricaricamento in tempo reale

Che cos'è il ricaricamento in tempo reale?

Il ricaricamento in tempo reale è una funzionalità che permette al tuo ambiente di sviluppo di monitorare le modifiche al tuo codice e ricaricare automaticamente la tua applicazione. Quando si salva un file, lo strumento di ricaricamento in tempo reale rileva la modifica, ricostruisce l'applicazione e la riavvia. Ciò ti evita il processo manuale di arrestare il server, ricostruire l'applicazione e avviarla di nuovo dopo ogni modifica.

Benefici del ricaricamento in tempo reale per lo sviluppo in Go

Il ricaricamento in tempo reale può notevolmente velocizzare il processo di sviluppo. Per gli sviluppatori Go, abituati a compilare il proprio codice prima di eseguirlo, il ricaricamento in tempo reale significa un flusso di lavoro migliorato con un feedback immediato. I vantaggi includono:

  1. Aumento della produttività: Gli sviluppatori possono rimanere concentrati senza interruzioni, in quanto non è necessario eseguire ricostruzioni manuali.
  2. Risparmio di tempo: Il ricaricamento in tempo reale riduce il tempo di attesa per vedere le modifiche al codice riflesse nell'applicazione in esecuzione.
  3. Rilevamento degli errori: Le ricostruzioni e riavvii istantanei consentono agli sviluppatori di rilevare e correggere gli errori più rapidamente.
  4. Flusso di lavoro ottimizzato: Si integra senza problemi nel processo di sviluppo, rendendolo più fluido ed efficiente.

Capitolo 2: Cos'è Air?

Air è un'utilità a riga di comando progettata per fornire capacità di ricaricamento in tempo reale per le applicazioni Go. Monitora le modifiche nel tuo codice sorgente e ricompila e riavvia automaticamente la tua applicazione Go. Ciò significa che puoi concentrarti di più nello sviluppo delle funzionalità e meno nelle attività ripetitive.

Funzionalità

Air offre una serie di funzionalità adatte a un ambiente di sviluppo Go moderno:

  • Ricostruzioni automatiche: Rileva le modifiche ai file e avvia le ricostruzioni.
  • Comandi di build personalizzabili: Consente di personalizzare i comandi di build in base alle esigenze del progetto.
  • Esclusioni delle directory: Ti consente di specificare le directory da escludere dal monitoraggio.
  • Supporto per le nuove directory: Può monitorare le nuove directory aggiunte dopo che Air è stato avviato.
  • Log colorati e leggibili: Migliora la leggibilità dei log di output con la colorazione.
  • Argomenti della CLI: I campi di configurazione possono essere impostati direttamente tramite argomenti a riga di comando per regolazioni rapide.

Consulta il contesto fornito dallo sviluppatore per un elenco completo delle funzionalità e delle funzionalità disponibili con Air.

Capitolo 3: Installazione di air

3.1 Installazione tramite go install

Per installare Air utilizzando la toolchain Go versione 1.18 o superiore:

go install github.com/cosmtrek/air@latest

Ciò renderà air disponibile nel tuo GOPATH/bin.

3.2 Utilizzo dello script install.sh

Un altro metodo è tramite uno script di installazione fornito:

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

Dopo l'installazione, verificala eseguendo:

air -v

3.3 Installazioni speciali (Docker/Podman e PATH personalizzato)

Per coloro che utilizzano Docker o Podman, c'è un modo ottimizzato per includere Air:

docker run -it --rm \
    -w "/percorso/al/progetto" \
    -v $(pwd):/percorso/al/progetto \
    -p porta:porta \
    cosmtrek/air

Sostituisci /percorso/al/progetto con il percorso del tuo progetto e porta:porta con il mapping della porta desiderato.

In alternativa, per un'installazione specifica del PATH:

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

Capitolo 4: Configurazione di air per il tuo progetto Go

4.1 Comprensione della configurazione .air.toml

.air.toml è il file di configurazione per Air. Ti consente di specificare impostazioni relative al processo di build, al monitoraggio delle directory e all'output del log. Ecco una breve panoramica delle sezioni chiave:

  • root: Imposta la directory di lavoro per Air.
  • build: Contiene impostazioni relative alla build come comandi da eseguire prima/dopo la build e il comando di build principale.
  • tmp_dir: La directory in cui vengono memorizzati i file temporanei di build.
  • log: Configura le impostazioni del file di log.
  • color: Personalizza il colore di ciascuna parte dell'output del log.

4.2 Generazione e Modifica del File di Configurazione

Per generare un file di configurazione predefinito .air.toml, eseguire il comando:

air init

Questo creerà un file .air.toml con le impostazioni predefinite nella directory corrente. È quindi possibile modificarlo per adattarlo alle esigenze del progetto. A titolo di riferimento, è possibile consultare il file air_example.toml fornito nel contesto.

4.3 Sovrascrittura della Configurazione con Argomenti CLI

Per test rapidi o modifiche minori, è possibile sovrascrivere la configurazione in .air.toml passando gli argomenti CLI. Ad esempio:

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

Questa flessibilità consente di personalizzare facilmente il comportamento di Air senza modificare il file di configurazione.

Capitolo 5: Esecuzione di air nel Tuo Ambiente di Sviluppo

6.1 Avvio di air nel Tuo Progetto

Per iniziare con air nel tuo progetto, naviga nella directory principale del tuo progetto nel terminale ed esegui il comando air. Se è presente un file di configurazione .air.toml, air lo utilizzerà automaticamente. In caso contrario, utilizzerà le impostazioni predefinite.

cd /percorso/verso/tuo_progetto
air

Suggerimento: Se incontri problemi di autorizzazione con l'eseguibile air, assicurati che abbia i necessari permessi di esecuzione (chmod +x $(go env GOPATH)/bin/air).

6.2 Personalizzazione dei Comandi di Build e Run con air

È possibile personalizzare i comandi di build e run utilizzati da air modificando il file di configurazione .air.toml, in particolare nella sezione [build]. Ad esempio, per modificare il comando di build e specificare un file binario diverso:

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

Per requisiti di build più complessi, gli array pre_cmd e post_cmd nel file di configurazione consentono di eseguire comandi prima e dopo il processo di build, rispettivamente.

Suggerimenti: Un esempio completo di configurazione di air

6.3 Esclusione delle Directory e Monitoraggio delle Modifiche

air consente anche di escludere directory dal monitoraggio delle modifiche, utile per directory contenenti risorse o dipendenze che non devono attivare una ricompilazione.

Per configurare ciò, aggiorna il campo exclude_dir in .air.toml:

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

Inoltre, è possibile istruire air a includere directory aggiuntive utilizzando include_dir, o a monitorare determinate estensioni di file utilizzando include_ext.

Capitolo 6: Utilizzo Avanzato

6.1 Configurazione di air con Contenitori Docker

Utilizzare air all'interno di un contenitore Docker può ottimizzare la configurazione di sviluppo, specialmente quando si lavora in team. Per includere air nel tuo ambiente Docker, aggiorna il tuo Dockerfile per installare air e copiare il tuo .air.toml nel contenitore:

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 Utilizzo di air in un Ambiente Docker-compose

Per integrare air in un servizio gestito da docker-compose, definisci un servizio nel tuo file docker-compose.yaml:

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

Assicurati che la direttiva volumes mappi correttamente la directory del tuo progetto alla directory di lavoro nel contenitore in modo che air possa rilevare le modifiche ai file.

Capitolo 7: Risoluzione dei Problemi Comuni e FAQ

7.1 Risoluzione dell'Errore command not found: air

Se incontri un errore command not found: air, significa tipicamente che l'eseguibile air non è nel PATH del sistema. Per risolvere questo problema, aggiungi il percorso dei binari di Go alla variabile di ambiente PATH:

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

7.2 Problemi negli ambienti WSL

In un ambiente Windows Subsystem for Linux (WSL), assicurati di eseguire l'escape dei caratteri speciali nel tuo file .air.toml. Ad esempio, utilizza \\ per eseguire l'escape delle barre rovesciate nei percorsi dei file.

7.3 Suggerimenti sulla compilazione a caldo senza eseguire il binario

Se desideri che air compili la tua applicazione Go senza eseguirla, imposta il cmd nella sezione [build] del tuo file .air.toml su un comando di non operazione (come /bin/true nei sistemi basati su Unix):

[build]
cmd = "/bin/true"

Fare ciò farà sì che air osservi comunque le modifiche ai file e avvii il processo di compilazione, ma non cercherà di eseguire il file binario risultante.