> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xneon.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Сборка Xneon Launcher из исходников: dev и production

> Соберите Xneon Launcher из исходников на Node.js 22+ и pnpm 11+. Команды dev, build, package, typecheck, test. Структура репозитория и процесс разработки.

Xneon Launcher распространяется под лицензией GPL-3.0, исходный код открыт на GitHub. Сборка требует Node.js 22+ и pnpm 11+. В этой статье описаны шаги от клонирования репозитория до production-сборки через electron-builder.

## Требования

* **Node.js**: 22 или выше
* **pnpm**: 11 или выше
* **Git**: для клонирования репозитория

## Быстрый старт

<Steps>
  <Step title="Клонируйте репозиторий">
    ```bash theme={null}
    git clone https://github.com/XneonTeam/Xneon-Launcher.git
    cd Xneon-Launcher
    ```
  </Step>

  <Step title="Установите зависимости">
    ```bash theme={null}
    pnpm install
    ```
  </Step>

  <Step title="Запустите в режиме разработки">
    ```bash theme={null}
    pnpm run dev
    ```

    Или ускоренный режим без полной пересборки:

    ```bash theme={null}
    pnpm run dev:fast
    ```
  </Step>
</Steps>

## Основные команды

| Команда | Назначение |
| - | - |
| `pnpm run dev` | Режим разработки с hot-reload |
| `pnpm run dev:fast` | Ускоренный dev без полной пересборки |
| `pnpm run build` | Production-сборка |
| `pnpm run package` | Сборка инсталляторов через electron-builder (выход в `release/`) |
| `pnpm run typecheck` | Проверка типов TypeScript |
| `pnpm run test` | Запуск тестов |
| `pnpm run sync:xnlc` | Синхронизация с пакетами `@xnlc/*` |

## Структура репозитория

```text theme={null}
Xneon-Launcher/
├── components/launcher/     # React-компоненты UI
├── electron/                # Electron-процессы
│   ├── main/                # Главный процесс
│   └── preload.ts           # Preload-скрипт IPC
├── lib/                     # Утилиты и хелперы
├── packages/                # Модули @xnlc/*
│   ├── xnlc-core/           # Ядро запуска Minecraft
│   ├── xnlc-mods/           # Интеграция с каталогами модов
│   ├── xnlc-servers/        # Управление серверами
│   ├── xnlc-skins/          # Система скинов
│   ├── xnlc-nbt/            # NBT-чтение и запись
│   └── xnlc-types/          # Общие типы TypeScript
├── src/                     # Исходники приложения
│   └── i18n/                # Локализация react-i18next
├── public/                  # Статические ресурсы
└── docs/screenshots/        # Скриншоты для документации
```

## Конфигурация окружения

Файл `.env` используется скриптом `scripts/gen-credentials.mjs` для генерации `electron/main/cloud/credentials.generated.ts`. Этот файл добавлен в `.gitignore` и создается автоматически при сборке.

## Добавление нового IPC-канала

Если вы дорабатываете лаунчер и добавляете новый IPC-канал, следуйте четырехэтапной схеме:

1. **Обработчик** в `electron/main/`
2. **Мост** в `electron/preload.ts` (`window.electronAPI`)
3. **Тип** в `src/electron.d.ts`
4. **Контракт** в `packages/xnlc-types/src/ipc-contracts.ts`

## Воркер запуска Minecraft

Запуск игры выполняется в отдельном воркере: `electron/main/minecraft-launch-worker.ts`. Это изолирует длительные операции (загрузка ассетов, разрешение библиотек) от UI-потока.

## Реестр пакетов

Внутренние пакеты `@xnlc/*` публикуются в реестре:

```text theme={null}
https://git.xneon.org/api/packages/MAINER4IK/npm/
```

## Известная проблема: EPERM на dxil.dll

<Warning>
  Если при сборке (`pnpm run build` или `package`) возникает ошибка доступа к `dxil.dll`, закройте все окна Xneon Launcher и завершите процессы `electron`. Это происходит, когда запущенный Electron удерживает файл.
</Warning>

## Сборка production

```bash theme={null}
pnpm run build
pnpm run package
```

Результат появится в папке `release/` в форматах для целевой платформы: `.exe`, `.dmg`, `.AppImage`, `.deb`, `.rpm`, `.pacman` или `.tar.xz`.

## Следующие шаги

* Изучите модули во вкладке [Core](/core/index)
* Прочитайте про [архитектуру](/core/architecture) лаунчера
* Внесите свой вклад через [GitHub Issues](https://github.com/XneonTeam/Xneon-Launcher/issues)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.