Что такое 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
Также в библиотеке
Стандартная библиотека Java (Java Standard Library)
Генерация PDF отчётов на Java: обзор библиотек и инструментов
Авторизация и аутентификация в JavaScript (Node.js): полное руководство
Работа с Apache Kafka в C++: библиотека librdkafka и практические примеры