Найдите реализацию здесь:
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`