Автор оригинала: FreeCodeCamp Community Member.
Крист Вунсуфасават
Я использовал Йоман начать многие из моих проектов. Это удивительный инструмент веб-лесов.
Но после создания своих собственных генераторов несколько раз я увидел повторяющиеся задачи, несколько длинный код и часть кода генератора, который смущает меня каждый раз.
В какой-то момент я оказался взлом маленькой утилиты, которую я продолжал копировать снова и снова из проекта. Я провел выходные, организующие это и добавив еще несколько функций, чтобы позаботиться о повторяющихся задачах.
И Йоман – легко родился.
Йоман – легко Помогает со следующими задачами при создании генератора с Yeoman:
Преимущество № 1: подтверждение
Часто вы хотели бы попросить пользователя подтвердить до провайдера. Первый код код ниже показывает, как написать это с простой Йоман. Второй код код показывает, как написать его с помощью Yeoman – легко.
С Yeoman – легко, вы можете попросить подтверждения, прежде чем продолжить в одной строке. Легко.confirmbeforeStartart (сообщение) Тогда легко.checkforconfirmation () Возвращает результат.
Преимущество № 2: Побуждать
Обработка результатов из строя, затем выбирая, какой запрос на отображение используется для осложнения.
this.prompt ()Возвращает обещание, которое необходимо обрабатывать, чтобы получить ответы и хранить их. Ответы обычно хранятся вЭто .propsОтказ Этот блок кода должен быть написан снова и снова.- Родительский генератор часто передает параметры для детского генератора через опции. Из того, что я видел, многие генераторы будут скрыты подсказки для полей, которые присутствуют в вариантах. (Да, вы должны написать код, чтобы проверить это.) Затем объедините ответы от подсказок и вариантов в
Это .propsОтказ
Для удобства Йоман – легко:
- Ручки хранения ответов пользователя из подсказок в
Это .propsОтказ Просто позвонителегко .PROMPT (подсказки)вместоthis.prompt (подсказки) - Может автоматически пропустить подсказку, если присутствует параметр с тем же именем. Это также скопирует значение существующих
Это. Совершения [поле]вЭто. [Поле]Отказ - Может зарегистрировать общие подсказки через
легко.learnprompts (подсказки)и позволить просматривать подсказки по имени при звонкелегко .Prompt ()Отказ Это может сэкономить много времени, если вы создаете несколько генераторов, которые задают подобные вопросы.
Преимущество № 3: Составляя
Генератор Yeoman может вызывать ( Composewith ) другой генератор из другого пакета или локального субгенератора, но текущий синтаксис для этого несколько длинный. Я до сих пор не уверен, что Местный поле означает.
Йоман – легко упрощает синтаксис на Легкоквартируйте, что имя, пространство имен, варианты) и Легкоквартируйте ,> Package, Package, пространство имен, варианты) Отказ
Преимущество № 4: обработка файлов
Yeoman предоставляет гибкие API для обработки файлов, чтобы покрыть много сценариев. Но требуется несколько строк для выполнения общей задачи, такой как копирование файла из каталога шаблона в каталог назначения. Функция для объемного копирования также существует, но она обескуражена.
Чтобы устранить вышеуказанные проблемы, Йоман – легко:
- Обеспечивает функции ввода/вывода, которые обертывают
this.fs.xxxа также решает Шаблон и назначение каталог для общих случаев (от шаблона до назначения). Эти функции включаютчитать,записывать,ПисьманСExtendjson,существует,СкопироватьиpopytemplateОтказ У меня полный список в моем Документация API Отказ - Обеспечивает функции для массового копирования как статических, так и динамических файлов на основе шаблона GLAC. См.
легко.copyfiles (...)в примере ниже.
Преимущество № 5: Способ цепочки
Йоман – легко создавался с цепочкой в виду и поддержке метода в цепочке для свободнокодировки.
Положить все это вместе
Вот пример, который демонстрирует все эти преимущества вместе в один генератор:
Темас-пакет Yeoman – теперь доступен на NPM. Посетите Github Repo Для более подробной информации Документация API и примеры. Я приветствую ваши запросы на потяжку и отчеты об ошибках.
Оригинал: “https://www.freecodecamp.org/news/creating-yeoman-generators-easily-with-yeoman-easily-cf552aef0d2f/”