bem-tools-find
Инструмент для поиска БЭМ сущностей по заданным критериям.
Возможности
- Использование в качестве самостоятельного CLI инструмента
- Использование в качестве плагина к bem-tools
- Возможность использования с помощью JS API
Установка
Инструмент устанавливается как обычная npm-зависимость:
$ npm install bem-tools-find
Использование
Использование с помощью CLI-интерфейса.
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
Использование инструмента с помощью JS API.
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 репозитория данного инструмента.