b_add: добавь БЭМ сущностей в проект

Не буду расписывать как прекрасен или ужасен БЭМ. Вы уже сами все знаете.

Проблема?

Как повествует нам методология, файловая система проекта предполагает хранение файлов разметки/скриптов/etc в отдельных папках названных именами блоков.
Честно сказать, я задолбался добавлять руками нужные файлы и папки. Да, есть bem-tools, но для себя я вижу его избыточным (по крайней мере сейчас).
В общем , на волне того, что мне хотелось попробовать Node.JS, за пару вечеров я написал маленькую консольную утилитку.

Конфигурация

В папке проекта создаем json файл:

cd project
touch b_add.json

Пример конфига:

{
  "blockLocation": "./app/blocks/",
  "elem": "__",
  "mod": "_",
  "files": {
    "block": [".styl", ".jade", ".wiki"],
    "blockMod": [".styl"],
    "elem": [".styl", ".jade"],
    "elemMod": [".styl"]
  }
}
  • blockLocation - путь к папке с блоками.
  • elem и mod - разделители для элементов и модификаторов. (можно использовать стиль от Гарри Робертса)
  • block/blockMod/elem/elemMod - расширения для создания файлов блока

"Просто добавь воды"

И так, что же она делает? Установив ее глобально из npm

npm i b_add -g

мы можем добавить нужные файлы и папки в проект вводя БЭМ классы в консоли:

b_add logo__slogan button__icon_heart

Команда создаст в папке проекта файлы для блоков logo и button, их элементов logo____slogan и button____icon, модификатора button____icon__heart в соответствии с конфигом.

├── app
│   └── blocks
│       └── logo
│           ├── __slogan
│           │   ├── logo__slogan.jade
│           │   └── logo__slogan.styl
│           ├── logo.jade
│           ├── logo.styl
│           └── logo.wiki

Дальнейшие планы

  • Инициализация конфига
  • Удаление, переименование блоков
  • Поддержка "плоской" файловой системы проекта

Ссылки по теме