enb-bem-examples
Инструмент для генерации сетов из примеров БЭМ-блоков с помощью ENB.
Установка
$ npm install --save-dev enb-bem-examples
Для работы модуля требуется зависимость от пакетов enb-magic-factory
версии 0.3.x
или выше, а так же enb
версии 0.15.0
или выше.
examples
в файловой системе
Технология Примеры — это обычные бандлы, которые располагаются в папке технологии examples
той БЭМ-сущности, которой они принадлежат.
В файловой системе они складываются плоским списком (simple
-уровень):
$ tree -a <level>.blocks/<block-name>/<block-name>.examples <block-name>.examples/ ├── 10-simple.bemjson.js # `10-simple` бандл в технологии `bemjson.js` ├── 10-simple.title.txt # `10-simple` бандл в технологии `title.txt` ├── 20-complex.bemjson.js # `20-simple` бандл в технологии `bemjson.js` └── 20-complex.title.txt # `20-simple` бандл в технологии `title.txt`
У каждого примера может быть свой уровень блоков:
$ tree -a <level>.blocks/<block-name>/<block-name>.examples <block-name>.examples/ ├── blocks/ # уровень для всех примеров блока `<block-name>` ├── 10-simple.blocks/ # уровень только для примера `10-simple` └── 10-simple.bemjson.js
В результате будет построен сет из примеров, каждый из которых представляет собой обычный бандл (nested
-уровень):
$ tree -a <set-name>.examples <set-name>.examples └── <block-name>/ # папка группирует примеры для БЭМ-сущности ├── 10-simple/ # `10-simple` бандл ├── <block-name>.blocks/ # уровень для всех примеров блока `<block-name>` ├── 10-simple.blocks/ # уровень блоков только для примера `10-simple` └── 10-simple.bemjson.js # `10-simple` бандл в технологии `bemjson.js` └── 20-complex/ # `20-simple` бандл ├── <block-name>.blocks/ # уровень для всех примеров блока `<block-name>` ├── 20-complex.blocks/ # уровень блоков только для примера `20-simple` └── 20-complex.bemjson.js # `20-simple` бандл в технологии `bemjson.js`
Примеры из документации (инлайновые примеры)
При написании документации в md
-файлах используют вставки bemjson
-кода.
Например, вставка bemjson
-кода для блока button
:
{ block: 'button', mods: { theme: 'normal', size: 'm', view: 'action' }, type: 'submit', text: 'Action'}
Такие вставки можно собирать в файловую систему в сеты так же, как и обычные примеры технологии examples
.
При сборке сета название бандла для инлайнового примера будет уникальным. Оно формируется из хэш-суммы bemjson
-кода примера.
Например, путь до банда с примерами блока button
, представленным выше:
desktop.examples/button/F_1FoglPvs4YpLRQGeUEiM6w4CY
Как использовать?
В make
-файле (.enb/make.js
) нужно подключить модуль enb-bem-examples
.
С помощью этого модуля следует создать конфигуратор, указав название таска в рамках которого будет происходить сборка уровней сетов из примеров.
Конфигуратор имеет единственный метод configure
. Его можно вызывать несколько раз, чтобы задекларировать сборку нескольких сетов.
module { config; // Подключаем модуль `enb-bem-examples`. var examples = config // Создаём конфигуратор сетов ; // в рамках `examples`-таска. examples;};
Опции
- String
destPath
— путь относительно корня до нового сета с бандлами примеров, которые нужно собрать. Обязательная опция. - String[] | Object[]
levels
— уровни в которых следует искать примеры. Обязательная опция. - String[]
techSuffixes
— суффиксы папок технологий с примерами. По умолчанию —['examples']
. - String[]
fileSuffixes
— суффиксы файлов внутри папок технологий с примерами. По умолчанию —['bemjson.js']
. - Boolean
inlineBemjson
— определяет возможность создания инлайновых примеров из md-файлов. По умолчанию —false
. - Function
processInlineBemjson
— функция обработки инлайновогоbemjson
.
Запуск из консоли
В make
-файле декларируется таск, в котором будет выполняться сборка сетов из примеров.
В ENB запуск таска осуществляется с помощью команды make
, которой передаётся имя таска:
$ ./node_modules/.bin/enb make <task-name>
Сборка всех примеров
Если сборка сетов из примеров была задекларирована в examples
-таске:
$ ./node_modules/.bin/enb make examples
Сборка указанного примера (точечная сборка)
Передаём список путей примеров, по которым должны собраться бандлы внутри сета:
$ ./node_modules/.bin/enb make <task-name> path/to/example-1 path/to/example-2
Чтобы собрать пример 10-simple
, принадлежащий БЭМ-сущности block__elem
, для сета desktop.examples
:
$ ./node_modules/.bin/enb make examples desktop.examples/block__elem/10-simple
Сборка всех примеров указанной БЭМ-сущности
Чтобы собрать все примеры БЭМ-сущности block__elem
для сета desktop.examples
:
$ ./node_modules/.bin/enb make examples desktop.examples/block__elem
Лицензия
© 2014 YANDEX LLC. Код лицензирован Mozilla Public License 2.0.