Найдите реализацию здесь:

https://github.com/saikumar197/formgenerator

Обзор
Schematics — это мощное и универсальное средство для поддержки построения CLI. Оно повышает производительность разработки и упрощает работу разработчика, собирая исходные требования в качестве плана процесса разработки.

Схемы как генераторы кода и других артефактов помогают нам настроить и настроить новый проект (или его части) стандартизированным и автоматизированным способом, который помогает нам с

– Стандартизация структуры
– Применение шаблонов
– Применение передового опыта
– Применение соглашений об именах
– Повторное использование реализаций
– Автоматизация задач

Основные цели @schematics/form-generator:

  • Расширяемость и повторное использование
  • атомарность
  • Безопасный и синхронный

Предварительные условия
Прежде чем мы начнем, нам нужно установить пакет @angular-devkit/schematics-cli, чтобы иметь возможность использовать команду Schematics в нашем терминале. Эта команда похожа на хорошо известную ng generate, но главное преимущество в том, что мы можем запускать ее где угодно, потому что она полностью независима от Angular CLI.

Концепции структуры

Схема состоит из основного файла, который экспортирует заводскую функцию. Эта функция вызывается с параметрами схемы. Фабрика возвращает нам правило, которое вызывается с виртуальным представлением файловой системы (дерева) и контекстом схемы.

Collection.json
Файл collection.json является основным файлом определения всей библиотеки схем и содержит определения всех схем, доступных в этой библиотеке.

Фабрика схем
Фабрика схем содержит функцию, которая принимает аргумент `_options` и возвращает нам `Правило`.
Мы можем параметризовать наше правило схемы (возвращенное фабрикой), чтобы ведет себя соответственно.

Правило
Вторым основным компонентом реализации схемы является само правило. Правило вызывается с **Деревом** и **Схематикконтекстом**. После вызова правило должно внести коррективы в дерево и вернуть его обратно для дальнейшей обработки.
Правило может вызывать в своем теле дополнительные уже реализованные правила, так как оно обладает всем необходимым для выполнения правила.

Дерево
Тогда дерево является виртуальным представлением каждого файла в рабочей области. Использование виртуального дерева вместо непосредственного управления файлами дает несколько больших преимуществ.
мы фиксируем изменения в дереве только в том случае, если каждая схема выполнена успешно
мы можем просматривать изменения, не внося их на самом деле (с ` — dry -run` флаг)
весь процесс выполняется быстрее, так как операции ввода-вывода (запись файлов на диск) происходят только в конце обработки

  • Schema.json
    Создав файл schema.json на том же уровне, что и ваш входной файл, мы сможем определить значения по умолчанию для наших параметров, пометить их по мере необходимости, убедиться, что мы передаем правильные типы и даже выдача подсказок.
  • Шаблон
    мы используем `__name@dasherize__`, который передает имя переменной из параметров в фабричную функцию, которая, в свою очередь, передается в шаблон для параметризации имени.

Генератор форм
@schematics/form-generator

- Создайте полный компонент формы html, css и необходимые файлы машинописного текста с моделью объекта, полученной из конфигурации json.
- Это вставляет импорт Ngmodule и обновляет массив объявлений модулей.

Эта схема отвечает за создание схемы формы с использованием передачи JSON с использованием начальной загрузки!

`ng g form path/name-component ./jsons/schema.json`

Настройка схемы форм в другом проекте

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

- Настройка через привязку пакета

При разработке угловых схем, если рабочая область настроена локально

В репозитории схем создайте схемы с помощью
`npm run build`.

связать пакет через npm, указав путь

`ссылка npm ../схемы/формы`

это установит пакет в рабочую область.

Измените подключение по умолчанию к пакету в angular.json в рабочей области

```
cli: {
analytics: false,
defaultCollection : «@схемы/формы»
}
```

Сгенерируйте шаблоны схемы с помощью команды

`нг формы`

- **Настройка как пакет npm.**

Командой npm pack создается файл .tgz, который можно установить в любом месте в Schematics-Cli.

`npm install ../schematics/forms/schematics-forms.tgz`

Или можно опубликовать в npm.js, который можно установить как внешний пакет, на который ссылается package.json.

`npm установить @схемы/формы`

#Тестирование

Для локального тестирования установите @angular-devkit/schematics-cli глобально и используйте инструмент командной строки для схемы. Этот инструмент действует так же, как команда генерации Angular CLI, но также имеет режим отладки.

Проверьте документацию с

`схемы — помощь`
##Модульное тестирование

`npm run test` запустит модульные тесты

#Издательский

Чтобы опубликовать, просто выполните:

`npm run build`
`npm publish`