# API генератора

## cliVersion

Тип: `string`

Строка **глобальной** версии `@vue/cli`, вызывающей подключаемый плагин.

## assertCliVersion

- **Аргументы**
  - `{integer | string} range` — semver диапазон, которому должна соответствовать `@vue/cli`

- **Использование**

  Хотя `api.version` и может быть полезным, иногда приятнее просто объявить требуемую версию. Данный API предоставляет простой способ сделать это.

  Ничего не произойдёт, если предоставленная версия устраивает. В противном случае, будет выдана ошибка.

## cliServiceVersion

Тип: `string`

Строка **локальной для проекта** версии `@vue/cli-service`, вызывающей подключаемый плагин.

## assertCliServiceVersion

- **Аргументы**
  - `{integer | string} range` — semver диапазон, которому должна соответствовать `@vue/cli-service`

- **Использование**

  Данный API предоставляет простой способ указания требуемой локальной версии `@vue/cli-service`.

  Ничего не произойдёт, если предоставленная версия устраивает. В противном случае, будет выдана ошибка.

  Примечание: Рекомендуется использовать [поле `peerDependencies` в файле `package.json`](https://docs.npmjs.com/files/package.json#peerdependencies) в большинстве случаев.


## resolve

- **Аргументы**
  - `{string} ..._paths` — Последовательность относительных путей или сегментов пути

- **Возвращает**
  - `{string}` — разрешённый (resolved) абсолютный путь, вычисленный на основе текущего корня проекта

- **Использование**:
Разрешение пути для текущего проекта

## hasPlugin

- **Аргументы**
  - `{string} id` — идентификатор плагина, можно опустить префикс (@vue/|vue-|@scope/vue)-cli-plugin-
  - `{string} version` — semver диапазон, опционально

- **Возвращает**
  - `{boolean}`

- **Использование**:
Проверяет есть ли в проекте плагин с указанным идентификатором. Если указан диапазон версий, то версия плагина должна соответствовать ему.

## addConfigTransform

- **Аргументы**
  - `{string} key` — ключ конфигурации в package.json
  - `{object} options` — настройки
  - `{object} options.file` — дескриптор файла. Используется для поиска существующего файла. Каждый ключ определяет тип файла (возможные значения: `['js', 'json', 'yaml', 'lines']`). Значение представляет собой список имён файлов. Например:

  ```js
  {
    js: ['.eslintrc.js'],
    json: ['.eslintrc.json', '.eslintrc']
  }
  ```

  По умолчанию первое имя файла будет использоваться для создания файла конфигурации.

- **Возвращает**
  - `{boolean}`

- **Использование**:
Настройка способа извлечения конфигурации.

## extendPackage

- **Аргументы**
  - `{object | () => object} fields` — поля для объединения

- **Использование**:
Расширение `package.json` проекта. Вложенные поля объединяются, если не передавалось `{ merge: false }`. Также используется для разрешения конфликтов зависимостей между плагинами. Поля конфигурации инструмента могут быть извлечены в отдельные файлы до того, как файлы будут записаны на диск.

## render

- **Аргументы**
  - `{string | object | FileMiddleware} source` — может быть одним из
    - относительный путь к каталогу;
    - хэш объект соответствий `{ sourceTemplate: targetFile }`;
    - пользовательский файл с middleware функцией
  - `{object} [additionalData]` — дополнительные данные, доступные для шаблонов
  - `{object} [ejsOptions]` — настройки для ejs

- **Использование**:
Рендер файлов шаблонов в дерево виртуальных файлов.

## postProcessFiles

- **Аргументы**
  - `{FileMiddleware} cb` — файл middleware

- **Использование**:
Добавление файла middleware, который будет выполняться после того, как все обычные middleware были выполнены.

## onCreateComplete

- **Аргументы**
  - `{function} cb`

- **Использование**:
Добавление коллбэка, который будет вызываться после записи файлов на диск.

## exitLog

- **Аргументы**
  - `{} msg` — строка или значение для отображения после завершения генерации;
  - `{('log'|'info'|'done'|'warn'|'error')} [type='log']` — тип сообщения.

- **Использование**:
Добавление сообщения для отображения по завершении генерации (после любых других стандартных сообщений).

## genJSConfig

- **Аргументы**
  - `{any} value`

- **Использование**:
Удобный способ создания JS файла конфигурации из JSON

## makeJSOnlyValue

- **Аргументы**
  - `{any} str` — JS выражение в виде строки

- **Использование**:
Преобразует строковое выражение в исполняемый JS для конфигурационных .js файлов

## injectImports

- **Аргументы**
  - `{string} file` — целевой файл для добавления импорта
  - `{string | [string]} imports` — строка/массив импортов

- **Использование**:
Добавление импортов в файл.

## injectRootOptions

- **Аргументы**
  - `{string} file` — целевой файл для добавления опций
  - `{string | [string]} options` — строка/массив опций

- **Использование**:
Добавление опций в корневой экземпляр Vue (определяемый по `new Vue`).

## entryFile

- **Возвращает**
  - `{('src/main.ts'|'src/main.js')}`

- **Использование**:
Получение входного файла, с учётом использования typescript.

## invoking

- **Возвращает**
  - `{boolean}`

- **Использование**:
Проверка, вызван ли плагин.
