<p align="right">
<a href="../en/commands.md">English description</a> | Описание на русском
</p>

# Component scheme file

С версии TARS 1.8.0 вы можете создавать новые компоненты на основе json-файла со хемой будущего компонента.

Файл представляет собой обычный json. Структура выглядит следующим образом:

```js
{
    "folders": [] // Массив объектов с описанием папок в текущей директории
    "files": [] // Массив объектов, которые описывают каждый файл в текущей директории
}
```

На самом верхнем уровне описываются папки и файлы, которые будут лежть в корне нового компонента.

Структура объекта папки:

```js
{
    "name": "data",  // Имя папки
    "files": [] // Массив объектов, которые описывают каждый файл в текущей директории
    "folders": [] // Массив объектов с описанием папок в текущей директории
}
```

Любая папка может содержать в себе другие папки и файлы. Стркутура рекурсивная. То есть вы можете вкладывать сколько угодно много папок в папки.

Структура объекта файла:

```js
{
    "name": "sidebar", // Имя файла
    "content": "<div class=\"sidebar\"></div>"  // Содержимое файла
}
```

В шаблоне модуля можно использовать три специальные переменные:
* **__componentName__** — будет заменено на имя компонента;
* **__templateExtension__** — будет заменено на базовое расширение выбранного шаблонизатора;
* **__cssExtension__** — будет заменено на базовое расширение выбранного css-препроцессора.

Пример конфига:

```js
{
    "folders": [
        {
            "name": "data",
            "files": [
                {
                    "name": "data.js",
                    "content": "__componentName__: {}"
                }
            ]
        }
    ],

    "files": [
        {
            "name": "__componentName__.__templateExtension__",
            "content": "<div class=\"__componentName__\"></div>"
        }, {
            "name": "__componentName__.__cssExtension__",
            "content": ".__componentName__ {}"
        }, {
            "name": "__componentName__.js",
            "content": ""
        }
    ]
}
```

Вы можете создавать несколько схем для различных случаев. При создании компонента просто укажите файл схемы после ключа `-s` или в интерактивном режиме. Указывать расширение json не обязательно.  

