generator-direct v0.7.0
generator-direct

Данный генератор для Yeoman берет на себя рутинные действия при создании блоков, элементов и модификаторов. В работе генератор использует самостоятельные саб-генераторы для создания файлов технологий, это позволяет создавать как наборы так и отдельные файлы. Может быть полезен проектам, использующим BEM.
Установка
$ npm install (-g) yo
$ npm install (-g) generator-directИспользование
Создание
Для создания файлов технологий генератору передаются данные сущности. Их можно задать в интерактивном режиме, либо передать значения в виде параметров.
Работа в интерактивном режиме начинается с команды
yo direct
Генератор уточнит необходимую информацию и создаст файлы технологий.

Также вы можете передать данные в параметрах:
$ yo direct b-block --tech jsДля получения информации о принимаемых параметрах, запустите генератор с флагом --help
Создание файлов для нескольких сущностей
На практике часто требуется создать файлы технологии сразу для нескольких сущностей, например, шаблоны для нескольких модификаций блока. Для этого передайте строку, разделенную запятыми, в значении параметра --v.В примере ниже создаются файлы CSS и JS сразу для двух модификаторов блока.
$ yo direct b-some --m view --v inline,block --tech js,cssРезультатом выполнения будет создание 4 файлов:
b-some/_view/b-some_view_inline.js
b-some/_view/b-some_view_block.js
b-some/_view/b-some_view_inline.css
b-some/_view/b-some_view_block.cssМножественные значения можно передавать аргументу с именем блока, параметра --e, --m, --v и --t.
Например команда
$ yo direct b-some,b-other --elem wrap,item --m view --v inline,block --tech css,mdсоздаст уже 16 файлов:
b-some/__wrap/_view/b-some__wrap_view_inline.css
b-some/__wrap/_view/b-some__wrap_view_block.css
b-some/__item/_view/b-some__item_view_inline.css
b-some/__item/_view/b-some__item_view_block.css
b-other/__wrap/_view/b-other__wrap_view_inline.css
b-other/__wrap/_view/b-other__wrap_view_block.css
b-other/__item/_view/b-other__item_view_inline.css
b-other/__item/_view/b-other__item_view_block.css
b-some/__wrap/_view/b-some__wrap_view_inline.md
b-some/__wrap/_view/b-some__wrap_view_block.md
b-some/__item/_view/b-some__item_view_inline.md
b-some/__item/_view/b-some__item_view_block.md
b-other/__wrap/_view/b-other__wrap_view_inline.md
b-other/__wrap/_view/b-other__wrap_view_block.md
b-other/__item/_view/b-other__item_view_inline.md
b-other/__item/_view/b-other__item_view_block.mdТакже вы можете использовать саб генераторы напрямую.
$ yo direct:css b-someВ результате будет создан только файл стилей для блока.
Удаление
Если результат генерации не соответсвует требованиям, можно удалить созданные файлы.
Для этого запустите команду с флагом --d.
$ yo direct b-block-name --tech js,css,deps --dГенератор сформирует список существующих файлов для удаления. Удалить можно все сразу, или выбрать файлы из списка

Подтвердив удаление, файлы будут удалены.

Саб-Генераторы
доступные генераторы технологий:
- direct:js
- direct:model
- direct:interface
- direct:bemhtml - поддерживает компактный и JS синтаксис, для настройки используйте флаг
bemhtml-syntax - direct:bh
- direct:bemtree
- direct:css
- direct:stylus
- direct:sass (scss)
- direct:test
- direct:md
- direct:utils
- direct:deps
Аргументы
blockName- имя блока
Параметры
--elemили--eНазвание элемента.
--modNameили--mНазвание модификатора.
--modValили--vЗначение модификатора (если не указано, генератор уточнит его).
--techили--tСписок технологий
--baseBlockили--bbНазвание базового блока. Если создается deps файл, то базовый блок будет автоматически включен в секцию mustDeps
--baseModelили--bmНазвание базовой модели. Если создается deps файл, то базовая модель будет автоматически включена в секцию mustDeps
--implementsили--iНазвание интерфейса. Если создается deps файл, то интерфейс будет автоматически включен в секцию mustDeps
--deleteили--dФлаг удаления.
--bemhtml-syntaxСинтакс BEMHTML шаблона (js или compact)
--levelили--lУровень переопределения (https://en.bem.info/method/key-concepts/#redefinition-level)
Создание сущностей
создать блока
yo direct b-someсоздание блока на заданом уровне переопределения
yo direct b-some --l common.blocksсоздать модификатор блока
$ yo direct b-some --modName muted --modVal yesсоздать элемент блока
$ yo direct b-some --elem childсоздать модифицированный элемент блока
$ yo direct b-some --elem child --modName view --modVal inlineЗа один раз можно создавать несколько сущностей
$ yo direct:css b-some,b-other --elem item,wrapв результате будет создано 4 файла
Прикладные примеры
При генерации файла модели учитывается имя блока
$ yo direct dm-model --tech model // dm-model/dm-model.js$ yo direct b-some --tech model // b-some/b-some.vm.jsсоздать модель с базовой моделью
$ yo direct b-some --tech model,deps --baseModel m-someсоздать блок с i-glue
$ yo direct b-some --tech js,deps --baseBlock i-glueсоздать интерфейс
$ yo direct i-interface --tech interface,depsудаление технологий
$ yo direct b-some --tech interface,deps,md --d