import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/BuildItem - Менеджер сборки компонентов'/>

# Класс BuildItem

Отвечает за оркестрацию процесса сборки отдельных компонентов с использованием Vite. Класс управляет временными конфигурациями сборки, запускает конвейер компиляции и агрегирует полученные файлы в единый снимок кода.

## Ключевые возможности

- **Изоляция конфигурации** — Безопасно переименовывает существующие конфиги Vite перед сборкой и восстанавливает их по завершении.
- **Интеграция с Vite** — Генерирует динамические конфигурации Vite на основе шаблона, специфичного для компонента.
- **Агрегация результатов** — Рекурсивно считывает файлы из временной директории дистрибутива и объединяет их в один файл `code.txt`.
- **Обработка ошибок** — Отслеживает статус сборки и обрабатывает коды выхода окружения при сбоях.
- **Управление хранилищем** — Предоставляет методы для получения и очистки временных путей дистрибутива.

## Инициализация

Инициализируйте `BuildItem`, указав целевой путь к компоненту.

**Параметры:**
- `path: string` — целевой путь к директории компонента для сборки.

```typescript
import { BuildItem } from '@dxtmisha/scripts'

const builder = new BuildItem('packages/components/Button')

// Запуск процесса сборки
await builder.make()
```

## Методы

### Управление

- `make(): Promise<boolean>` — координирует полный жизненный цикл сборки: резервное копирование конфига, выполнение сборки и восстановление файлов.
- `getCode(): string` — возвращает содержимое агрегированного снимка кода, созданного в процессе сборки.
- `removeDir(): void` — безвозвратно удаляет временную директорию дистрибутива.

## Внутренний процесс сборки

Процесс сборки следует строгому жизненному циклу для обеспечения безопасности окружения и согласованности вывода:

1.  **Резервное копирование конфигурации** — Переименовывает существующий `vite.config.ts` в `vite.config.workers.ts`, чтобы предотвратить его перезапись или вмешательство в процесс сборки.
2.  **Синтез шаблона** — Читает специальный шаблон Vite для компонентов и динамически подставляет в него целевой путь.
3.  **Выполнение в оболочке** — Запускает команду `npm run build` через дочерний процесс, перехватывая и логируя весь вывод.
4.  **Восстановление** — Безопасно восстанавливает оригинальный `vite.config.ts` из резервной копии сразу после завершения сборки.
5.  **Агрегация** — Рекурсивно сканирует директорию дистрибутива, оборачивает содержимое каждого файла в идентифицирующий комментарий и записывает итоговый результат в `code.txt`.
