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

<Meta title='@dxtmisha/ru/scripts/Classes/ComponentItem - Генератор файлов компонента'/>

# Класс ComponentItem

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

## Ключевые особенности

- **На основе шаблонов** — использует централизованный репозиторий шаблонов компонентов для единообразной генерации файлов.
- **Динамические замены** — автоматически заменяет маркеры, такие как `ComponentDoc`, `[project]` и `[path]`, на контекстные значения.
- **Поддержка плейсхолдеров** — обрабатывает преобразования как в camelCase (имена классов), так и в kebab-case (имена файлов).
- **Управление правами** — гарантирует, что сгенерированные файлы имеют правильные права на выполнение, чтение и запись.

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

Для инициализации объекта вызовите конструктор `ComponentItem(path)`.

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

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

const component = new ComponentItem('src/components/MyComponent')

// Генерация файлов
component.make()
```

## Методы

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

- `make(): void` — основной метод, который считывает все файлы шаблонов и записывает их обработанные версии в директорию компонента.

## Примеры

### Ручное создание заготовки
В то время как `ComponentCreator` управляет пакетным созданием, `ComponentItem` можно использовать напрямую для точного контроля над конкретным компонентом.

```javascript
const item = new ComponentItem('packages/ui/src/components/Avatar')
item.make()
```
