EnglishРусский中文

Урок 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

Эта команда:

  1. Скачивает tunwg (компонент для WireGuard-туннеля)
  2. Собирает веб-приложение
  3. Встраивает веб-ресурсы в хаб
  4. Компилирует всё в один файл

Результат — единый бинарный файл 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 installbun run build)
  • bun run build:single-exe создаёт единый файл со всем встроенным
  • bun run dev — удобный режим для разработки с автоперезагрузкой
  • Вся сборка занимает буквально 2-3 команды