Урок 3. Сборка HAPI из исходников#
Зачем это нужно#
Обычно HAPI устанавливается готовой командой (npx @twsxtd/hapi). Но иногда нужно собрать его самостоятельно из исходного кода — например, чтобы внести изменения, протестировать новую функцию или собрать версию под свою платформу.
Исходный код (source code) — это текстовые файлы, написанные программистами. Сборка (build) — процесс превращения этих файлов в готовую программу.
Структура проекта#
HAPI организован как монорепо (mono-repo) — один репозиторий, в котором живут несколько связанных проектов:
hapi/
├── cli/ — Командная строка (то, что вы запускаете как `hapi`)
├── hub/ — Сервер-хаб (управляет сессиями и подключениями)
├── web/ — Веб-приложение (интерфейс в браузере / PWA)
├── shared/ — Общий код, используемый другими частями
├── website/ — Сайт проекта (документация)
├── docs/ — Документация
└── package.json — Главный файл конфигурации проектаЧто делает каждая часть#
| Папка | Назначение | Аналогия |
|---|---|---|
cli/ |
Программа для терминала | Пульт управления |
hub/ |
Серверная часть | Диспетчерская |
web/ |
Браузерный интерфейс | Экран на стене |
shared/ |
Общие функции | Общая библиотека |
website/ |
Сайт с документацией | Справочник |
Что нужно для сборки#
Bun — быстрый инструмент для запуска JavaScript/TypeScript. Это альтернатива Node.js, которую использует HAPI.
Установите Bun, если его ещё нет:
curl -fsSL https://bun.sh/install | bashПошаговая сборка#
Шаг 1. Скачайте исходный код#
git clone https://github.com/anthropics/hapi.git
cd hapiШаг 2. Установите зависимости#
Зависимости (dependencies) — внешние библиотеки, которые нужны проекту для работы.
bun installЭта команда прочитает package.json и скачает все необходимые библиотеки. Поскольку HAPI — монорепо, bun install установит зависимости сразу для всех частей (cli, hub, web и т.д.).
Шаг 3. Соберите всё#
Есть несколько вариантов сборки:
Вариант А: Собрать отдельные компоненты#
bun run build # собрать cli + hub + webИли по отдельности:
bun run build:cli # только CLI
bun run build:hub # только Hub
bun run build:web # только Web-приложениеВариант Б: Собрать единый исполняемый файл#
Исполняемый файл (executable) — готовая программа, которую можно запустить без дополнительных инструментов.
bun run build:single-exeЭта команда:
- Скачивает tunwg (компонент для WireGuard-туннеля)
- Собирает веб-приложение
- Встраивает веб-ресурсы в хаб
- Компилирует всё в один файл
Результат — единый бинарный файл hapi, который содержит в себе CLI + Hub + Web-приложение + базу данных SQLite.
Шаг 4. Режим разработки#
Для разработки (когда вы вносите изменения и хотите сразу видеть результат):
bun run devЭта команда одновременно запускает hub и web в режиме разработки с автоматической перезагрузкой при изменениях.
Сборка для всех платформ#
Для создания релизных файлов под все платформы:
bun run build:single-exe:allРезультат появится в cli/dist-exe/ — отдельные файлы для macOS (ARM и x64), Linux и Windows.
Проверка кода#
Перед отправкой изменений полезно запустить проверки:
bun run typecheck # проверка типов (TypeScript)
bun run test # запуск тестовИтоги урока#
- HAPI — монорепо из 5 частей: cli, hub, web, shared, website
- Для сборки нужен только Bun (
bun install→bun run build) bun run build:single-exeсоздаёт единый файл со всем встроеннымbun run dev— удобный режим для разработки с автоперезагрузкой- Вся сборка занимает буквально 2-3 команды