Инструмент для поиска БЭМ сущностей по заданным критериям.
- Использование в качестве самостоятельного CLI инструмента
- Использование в качестве плагина к bem-tools
- Возможность использования с помощью JS API
Инструмент устанавливается как обычная npm-зависимость:
$ npm install bem-tools-find
BEM Tool Find
Usage:
find COMMAND [OPTIONS] [ARGS]
find [OPTIONS] [ARGS]
Commands:
completion : Shell completion
Options:
-h, --help : Help
-l LEVEL, --level=LEVEL : Name of level(s)
-b BLOCK, --block=BLOCK : Name of block(s)
-e ELEMENT, --element=ELEMENT : Name of element(s)
-m MODIFIER, --mod=MODIFIER : Name of modifier(s)
-t TECH, --tech=TECH : Name of tech(s)
-v VIEW, --view=VIEW : Type of output
Arguments:
ENTITY : entity
Здесь:
-h,--help- флаг предназначенный для получения справочной информации по вызову команды.-l,--level- имя уровня(ей) переопределения блоков для поиска. Может быть использован несколько раз.-b,--block- имя блока(ов) для поиска. Может быть использован несколько раз.-e,--element- имя элемента(ов) блока(ов) для поиска. Может быть использован несколько раз.-m,--mod- имя модификатора. Если указан также параметр элемента (-e,--element), то подразумевается поиск по модификаторам элементов блока. Если параметр элемента отсутствует, то будет произведен поиск по модификаторам блока.-t,--tech- имя технологии блока.-v,--view- стиль вывода результата поиска. Может принимать значенияplain(по умолчанию),tableиtree.
- Поиск всех БЭМ сущностей в проекте:
$ ./node-modules/bem-tools-find/find
- Поиск файлов блока
my-block:
$ ./node-modules/bem-tools-find/find -b my-block
- Поиск файлов блока
my-blockна уровне переопределенияdesktop.blocks:
$ ./node-modules/bem-tools-find/find -l desktop.blocks -b my-block
- Поиск файлов для нескольких блоков:
$ ./node-modules/bem-tools-find/find -b my-block1 -b my-block2
- Поиск файлов элемента
my-elementблокаmy-block:
$ ./node-modules/bem-tools-find/find -b my-block -e my-element
- Поиск файлов модификатора
my-modблокаmy-block:
$ ./node-modules/bem-tools-find/find -b my-block -m my-mod
- Поиск файлов модификатора
my-modэлементаmy-elementблокаmy-block:
$ ./node-modules/bem-tools-find/find -b my-block -e my-element -m my-mod
- Поиск файлов технологии
jsблокаmy-block:
$ ./node-modules/bem-tools-find/find -b my-block -t js
- Вывод результатов поиска файлов блока
my-blockв табличном виде:
$ ./node-modules/bem-tools-find/find -b my-block -v table
- Вывод результатов поиска файлов блока
my-blockв виде дерева БЭМ сущностей:
$ ./node-modules/bem-tools-find/find -b my-block -v tree
- Получение справочной информации:
$ ./node-modules/bem-tools-find/find --help
Кроме того, инструмент допускает использование сокращенного синтаксиса для поиска сущностей, например
для того, чтобы найти файлы блоков my-block1 и my-block2, можно использовать команду:
$ ./node-modules/bem-tools-find/find my-block1 my-block2
Аналогично для элементов и модификаторов блоков:
$ ./node-modules/bem-tools-find/find my-block1__some-elem
$ ./node-modules/bem-tools-find/find my-block1_modName_modValue
bem-tools-find также может быть использован программно. Для этого нужно подключить зависимость
bem-tools-find в модуль вашего проекта и передать переметры для поиска BEM-сущностей.
var bemToolsFind = require('bem-tools-find');
bemToolsFind({
levels: ['level1'],
blocks: ['block1', 'block2'],
elements: ['elem1', 'elem2'],
modifiers: ['mod1', 'mod2'],
techs: ['tech1', 'tech2']
}).pipe(process.stdout) //здесь вместо `process.stdout` можно использовать ваш собственный stream.
Примечание: в передаваемом объекте с параметрами поиска любые поля могут быть опущены в том случае если критерий поиска по ним не является необходимым.
Запуск тестов
$ npm test
Запуск тестов с вычислением покрытия кода тестами с помощью инструмента istanbul:
$ npm run cover
Проверка синтаксиса кода с помощью: jshint, jscs
$ npm run lint
Особая благодарность за помощь в разработке:
Разработчики:
Вопросы и предложения присылать в раздел issues репозитория данного инструмента.