Привет. Занимаюсь тем, что пытаюсь внедрить БЭМ стэк на уже готовый к первому релизу проект. Т.к. полностью и сразу мне его на БЭМ переводить никто не дает, то я решил поступить следующим образом, определить бандл components, в components.bemdecl.js объявить зависимости от всех блоков, которые у меня сейчас есть, и понемногу начинать разбивать код сайта на блоки там где я могу это безболезненно сделать. В принципе такой подход работает. Но меня напрягает необходимость после добавления нового блока в мой уровень, прописывать его в deps файла components.bemdecl.js, по-любому кто-то будет забывать это делать. Можно как-то сделать, чтобы у меня собирались все блоки со всеми элементами уровня по умолчанию, без необходимости править components.bemdecl.js?
Андрей @andrewblond давай сделаем либу, которая будет дергать сканер и по результатам генерировать
bemdecl
? Она и для нас имеет смысл, чтобы поставлять bem-components как библиотеку.Прямо сейчас можно написать технологию, которая будет составлять такой bemdecl.js, чтобы не писать его руками.
Технология будет выглядеть примерно так:
@tadatuta не очень понимаю, что ты имеешь ввиду под "либой".
@andrewblond я говорил про консольную тулзу, которой можно передать путь до уровней, для которых нужно генерировать декларацию.
собирать с проектного уровня — норм, а со всех без исключения плохо, т.к. будет куча лишнего кода.
@tadatuta технологии
bemdecl-all
можно подать опциюlevelsTarget
в которой будут только уровни проекта.круто! давай попробуем собрать бандлы всех технологий по платформам в
bem-components
. если все будет ок, нужно его автоматически собирать и постить наgh-pages
для каждого релиза.Завёл ишью про добавление технологии — https://github.com/enb-bem/enb-bem/issues/41
@tadatuta @andrewblond делайте и в тулзах
@andrewblond спасибо большое за код технологии, работает.
Одно небольшое уточнение, в коде технологии я реверснул итоговый массив с зависимостями
bemdecl.reverse()
, так что бы блоки уровня моего приложения были последними, а уровня common.blocks шли первыми. По другому блоки в рантайме создаются пустыми, хотя вроде бы ошибок нет :).@voischev, переходите на ENB уже ;) Ну или пулл-реквесты принимаются...
@andrewblond Вот пока не охото. Выполняет все нужны.