Capítulo 1: Introducción a la Recarga en Vivo
¿Qué es la Recarga en Vivo?
La recarga en vivo es una característica que permite a tu entorno de desarrollo observar los cambios en tu código y recargar automáticamente tu aplicación. Cuando guardas un archivo, la herramienta de recarga en vivo detecta el cambio, reconstruye la aplicación y la reinicia. Esto te ahorra el proceso manual de detener el servidor, reconstruir la aplicación y reiniciarla después de cada cambio.
Beneficios de la Recarga en Vivo para el Desarrollo en Go
La recarga en vivo puede acelerar significativamente el proceso de desarrollo. Para los desarrolladores de Go, que están acostumbrados a compilar su código antes de ejecutarlo, la recarga en vivo significa un flujo de trabajo mejorado con retroalimentación inmediata. Los beneficios incluyen:
- Aumento de la Productividad: Los desarrolladores pueden mantenerse concentrados sin interrupciones, ya que no necesitan realizar reconstrucciones manuales.
- Ahorro de Tiempo: La recarga en vivo reduce el tiempo de respuesta para ver los cambios de código reflejados en la aplicación en ejecución.
- Detección de Errores: Las reconstrucciones y reinicios instantáneos permiten a los desarrolladores detectar y corregir errores más rápido.
- Flujo de Trabajo Optimizado: Se integra perfectamente en el proceso de desarrollo, haciéndolo más suave y eficiente.
Capítulo 2: ¿Qué es Air?
Air es una utilidad de línea de comandos diseñada para proporcionar capacidades de recarga en vivo para aplicaciones en Go. Supervisa los cambios en tu código fuente y reconstruye y reinicia automáticamente tu aplicación en Go. Esto significa que puedes centrarte más en el desarrollo de características y menos en tareas repetitivas.
Funcionalidades
Air ofrece una variedad de funcionalidades adecuadas para un entorno de desarrollo moderno en Go:
- Reconstrucciones Automáticas: Detecta cambios en archivos y desencadena reconstrucciones.
- Comandos de Construcción Personalizables: Te permite personalizar los comandos de construcción según las necesidades de tu proyecto.
- Exclusiones de Directorios: Te permite especificar los directorios a excluir del monitoreo.
- Soporte para Nuevos Directorios: Puede observar nuevos directorios agregados después de que Air haya sido iniciado.
- Registros Coloridos y Legibles: Mejora la legibilidad de los registros de salida con codificación de colores.
- Argumentos de la CLI: Los campos de configuración se pueden establecer directamente a través de argumentos de línea de comandos para ajustes rápidos.
Consulta el contexto proporcionado por el desarrollador para obtener una lista completa de funcionalidades disponibles con Air.
Capítulo 3: Instalación de air
3.1 Instalación a través de go install
Para instalar Air usando la cadena de herramientas de Go versión 1.18 o superior:
go install github.com/cosmtrek/air@latest
Esto hará que air
esté disponible en tu GOPATH/bin
.
3.2 Uso del script install.sh
Otro método es a través de un script de instalación proporcionado:
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
Después de la instalación, verifica ejecutando:
air -v
3.3 Instalaciones Especiales (Docker/Podman y RUTA Personalizada)
Para aquellos que usan Docker o Podman, hay una forma simplificada de incluir Air:
docker run -it --rm \
-w "/ruta/al/proyecto" \
-v $(pwd):/ruta/al/proyecto \
-p puerto:puerto \
cosmtrek/air
Reemplaza /ruta/al/proyecto
con la ruta de tu proyecto y puerto:puerto
con el mapeo de puerto deseado.
Alternativamente, para una instalación en una RUTA específica:
curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/ruta/personalizada sh
Capítulo 4: Configurando air
para tu Proyecto en Go
4.1 Entendiendo la Configuración de .air.toml
.air.toml
es el archivo de configuración para Air. Te permite especificar ajustes relacionados con el proceso de construcción, monitoreo de directorios y salida de registros. Aquí tienes un resumen breve de las secciones clave:
-
root
: Establece el directorio de trabajo para Air. -
build
: Contiene ajustes relacionados con la construcción, como comandos a ejecutar antes/después de la construcción y el comando principal de construcción. -
tmp_dir
: El directorio donde se almacenan los archivos temporales de construcción. -
log
: Configura los ajustes del archivo de registro. -
color
: Personaliza el color de cada parte de la salida del registro.
4.2 Generación y Modificación del Archivo de Configuración
Para generar un archivo de configuración predeterminado .air.toml
, ejecuta:
air init
Esto creará un archivo .air.toml
con la configuración predeterminada en tu directorio actual. Luego puedes modificarlo para que se ajuste a los requisitos de tu proyecto. Como referencia, puedes consultar el archivo air_example.toml
proporcionado en el contexto.
4.3 Sobrescribir la Configuración con Argumentos de la CLI
Para pruebas rápidas o cambios menores, puedes sobrescribir la configuración en .air.toml
pasando argumentos de la CLI. Por ejemplo:
air --build.cmd "go build -o myapp" --build.bin "./myapp"
Esta flexibilidad te permite personalizar fácilmente el comportamiento de Air sin necesidad de cambiar el archivo de configuración.
Capítulo 5: Ejecutando air
en tu Entorno de Desarrollo
6.1 Iniciando air
en tu Proyecto
Para comenzar a usar air
en tu proyecto, navega hasta el directorio raíz de tu proyecto en tu terminal y ejecuta el comando air
. Si hay un archivo de configuración .air.toml
presente, air
lo usará automáticamente. De lo contrario, utilizará la configuración predeterminada.
cd /ruta/a/tu_proyecto
air
Nota: Si encuentras problemas de permisos con el ejecutable air
, asegúrate de que tenga los permisos de ejecución necesarios (chmod +x $(go env GOPATH)/bin/air
).
6.2 Personalizando los Comandos de Compilación y Ejecución con air
Puedes personalizar los comandos de compilación y ejecución utilizados por air
modificando el archivo de configuración .air.toml
, específicamente bajo la sección [build]
. Por ejemplo, para cambiar el comando de compilación y especificar un archivo binario diferente:
[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"
Para requisitos de compilación más complejos, los arrays pre_cmd
y post_cmd
en el archivo de configuración te permiten ejecutar comandos antes y después del proceso de compilación, respectivamente.
6.3 Excluir Directorios y Observar Cambios
air
también te permite excluir directorios de ser observados por cambios, lo cual puede ser útil para directorios que contienen activos o dependencias que no necesitan provocar una reconstrucción.
Para configurar esto, actualiza el campo exclude_dir
en .air.toml
:
[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]
También puedes indicar a air
que incluya directorios adicionales usando include_dir
, o que observe extensiones de archivo específicas con include_ext
.
Capítulo 6: Uso Avanzado
6.1 Configuración de air
con Contenedores Docker
Usar air
dentro de un contenedor Docker puede agilizar la configuración de desarrollo, especialmente al trabajar en equipo. Para incluir air
en tu entorno Docker, actualiza tu Dockerfile
para instalar air
y copiar tu .air.toml
dentro del contenedor:
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 Uso de air
en un Entorno Docker-compose
Para integrar air
en un servicio gestionado por docker-compose
, define un servicio en tu archivo docker-compose.yaml
:
version: '3.8'
services:
app:
build: .
ports:
- "808:808"
volumes:
- .:/app
command: ["air", "-c", ".air.toml"]
Asegúrate de que la directiva volumes
esté mapeando correctamente el directorio de tu proyecto al directorio de trabajo en el contenedor para que air
pueda detectar cambios en los archivos.
Capítulo 7: Solución de Problemas Comunes y Preguntas Frecuentes
7.1 Solución para el Error command not found: air
Si te encuentras con un error de command not found: air
, generalmente significa que el binario de air
no está en el PATH
de tu sistema. Para resolver esto, agrega la ruta de los binarios de Go a tu variable de entorno PATH
:
export PATH=$PATH:$(go env GOPATH)/bin
7.2 Problemas en Entornos WSL
En un entorno del Subsistema de Windows para Linux (WSL), asegúrate de escapar los caracteres especiales en tu archivo .air.toml
. Por ejemplo, utiliza \\
para escapar las barras inclinadas en las rutas de archivos.
7.3 Consejos sobre Compilación en Caliente sin Ejecutar el Binario
Si deseas que air
compile tu aplicación Go sin ejecutarla, establece el cmd
en la sección [build]
de tu archivo .air.toml
en un comando de no operación (como /bin/true
en sistemas basados en Unix):
[build]
cmd = "/bin/true"
Al hacer esto, air
seguirá observando los cambios en los archivos y activará el proceso de compilación, pero no intentará ejecutar el archivo binario resultante.