Air для Go: полное руководство с примерами

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое Air и зачем он нужен?

Air — это мощная утилита для Go-разработчиков, которая обеспечивает live reload (горячую перезагрузку) приложений. Если вы когда-либо писали веб-приложения на Go, вы знаете, как утомительно каждый раз вручную останавливать сервер (Ctrl+C), перекомпилировать проект (go build) и запускать его снова. Air автоматизирует этот процесс: он следит за изменениями в исходном коде вашего проекта и автоматически пересобирает и перезапускает приложение при любом сохранении файла.

Air создан командой Cosmos (ранее известной как Tendermint) и написан на самом Go. Это не библиотека в классическом смысле (вы не импортируете её в свой код), а инструмент командной строки, который запускается параллельно с вашим приложением.

Зачем нужен Air?

  • Ускорение разработки: экономит минуты, которые тратятся на ручную перекомпиляцию.
  • Удобство: достаточно сохранить файл — и сервер перезапускается автоматически.
  • Поддержка любых Go-проектов: работает с веб-серверами, CLI-утилитами, Telegram-ботами и любыми другими приложениями.
  • Гибкая конфигурация: можно настроить игнорирование папок, задержки, дополнительные команды и многое другое.

Air особенно полезен при разработке веб-приложений на фреймворках вроде Gin, Echo, Fiber или стандартного net/http, где каждая правка требует перезапуска сервера.

Установка Air

Air можно установить несколькими способами. Выберите наиболее подходящий для вашей системы.

Способ 1: Установка через go install (рекомендуемый)

Самый простой способ — использовать стандартный менеджер пакетов Go. Убедитесь, что у вас установлен Go версии 1.16 или выше.

go install github.com/air-verse/air@latest

После этого бинарный файл air будет помещён в каталог $GOPATH/bin (обычно это ~/go/bin). Убедитесь, что этот каталог добавлен в переменную окружения PATH.

Способ 2: Установка через Homebrew (macOS / Linux)

Если вы используете macOS или Linux с Homebrew, установка тривиальна:

brew install air

Способ 3: Установка через скрипт (Linux / macOS / WSL)

Вы можете использовать установочный скрипт:

curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s

Способ 4: Установка через Docker

Для тех, кто предпочитает Docker:

docker run -it --rm -v "$PWD":/app -w /app cosmtrek/air

Проверка установки

После установки проверьте, что Air работает:

air -v

Вы должны увидеть версию утилиты, например: v1.52.3

Быстрый старт с примером кода

Давайте создадим простое веб-приложение на Go и настроим для него live reload с помощью Air.

Шаг 1: Создайте новый проект

mkdir my-air-app
cd my-air-app
go mod init my-air-app

Шаг 2: Напишите простой HTTP-сервер

Создайте файл main.go:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, Air! Текущее время: %s", time.Now().Format("15:04:05"))
    })

    fmt.Println("Сервер запущен на http://localhost:8080")
    http.ListenAndServe(":8080", nil)
}

Шаг 3: Инициализируйте конфигурацию Air

air init

Эта команда создаёт файл .air.toml в корне проекта с настройками по умолчанию. Вы можете отредактировать его позже под свои нужды.

Шаг 4: Запустите Air

air

Вы увидите вывод, подобный этому:

  __    _   ___
 / /\  | | | |_)
/_/--\ |_| |_| \_ v1.52.3, built with Go 1.22.3

watching .
!exclude tmp
building...
running...

Сервер запущен на http://localhost:8080

Шаг 5: Проверьте live reload

Откройте браузер и перейдите на http://localhost:8080. Вы увидите приветствие. Теперь измените текст в main.go, например, замените "Hello, Air!" на "Hello, World!". Сохраните файл — и Air автоматически пересоберёт и перезапустит сервер. Обновите страницу — изменения вступят в силу.

Основные методы и функции Air

Air — это утилита командной строки, поэтому его "методы" — это флаги и опции конфигурации. Рассмотрим основные из них.

1. air init — Инициализация конфигурации

Что делает: Создаёт файл .air.toml с настройками по умолчанию в текущем каталоге.

Параметры: Нет.

Пример:

air init

2. air — Запуск Air с конфигурацией по умолчанию

Что делает: Запускает Air, используя файл .air.toml в текущем каталоге. Если файл не найден, используется конфигурация по умолчанию.

Параметры: Нет (но можно передать флаги).

Пример:

air

3. air -c <config_path> — Запуск с указанием конфигурационного файла

Что делает: Позволяет указать путь к конфигурационному файлу, если он находится не в корне проекта или называется иначе.

Параметры: -c или --config — путь к TOML-файлу конфигурации.

Пример:

air -c /path/to/.air.toml

4. air -d — Запуск в фоновом режиме (detach)

Что делает: Запускает Air в фоновом режиме, не блокируя терминал. Полезно для CI/CD или при работе в IDE.

Параметры: -d или --detach.

Пример:

air -d

5. air --build.cmd — Переопределение команды сборки

Что делает: Позволяет изменить команду, используемую для сборки проекта. По умолчанию это go build -o ./tmp/main ..

Параметры: Задаётся в конфигурационном файле .air.toml в секции [build].

Пример (в .air.toml):

[build]
cmd = "go build -o ./tmp/myapp ."

6. air --build.bin — Путь к бинарному файлу

Что делает: Указывает путь к скомпилированному бинарному файлу, который будет запущен.

Параметры: Задаётся в конфигурационном файле .air.toml в секции [build].

Пример (в .air.toml):

[build]
bin = "./tmp/main"

7. air --build.exclude_dir — Исключение каталогов из отслеживания

Что делает: Позволяет исключить определённые каталоги из мониторинга изменений. Это ускоряет работу и предотвращает лишние перезапуски.

Параметры: Задаётся в конфигурационном файле .air.toml в секции [build].

Пример (в .air.toml):

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

8. air --build.include_ext — Фильтрация по расширениям файлов

Что делает: Указывает, изменения каких файлов отслеживать. По умолчанию это ["go", "tpl", "tmpl", "html"].

Параметры: Задаётся в конфигурационном файле .air.toml в секции [build].

Пример (в .air.toml):

[build]
include_ext = ["go", "html", "css", "js"]

9. air --build.delay — Задержка перед перезапуском

Что делает: Устанавливает задержку в миллисекундах перед перезапуском после обнаружения изменений. Полезно, чтобы избежать множественных перезапусков при сохранении нескольких файлов.

Параметры: Задаётся в конфигурационном файле .air.toml в секции [build].

Пример (в .air.toml):

[build]
delay = 1000  # 1 секунда

10. air --build.stop_on_error — Остановка при ошибке сборки

Что делает: Если установлено в true, Air остановит текущий запущенный процесс при ошибке компиляции. По умолчанию false (процесс продолжает работать со старой версией).

Параметры: Задаётся в конфигурационном файле .air.toml в секции [build].

Пример (в .air.toml):

[build]
stop_on_error = true

11. air --build.args_bin — Аргументы для запускаемого приложения

Что делает: Позволяет передать аргументы командной строки вашему приложению при запуске.

Параметры: Задаётся в конфигурационном файле .air.toml в секции [build].

Пример (в .air.toml):

[build]
args_bin = ["--port", "9090", "--debug"]

12. air --log.time — Отображение времени в логах

Что делает: Включает отображение временных меток в логах Air.

Параметры: Задаётся в конфигурационном файле .air.toml в секции [log].

Пример (в .air.t

Рекомендаций