Всем привет. Стоит такая задача. Выделить общий css который используют все бандлы. То есть те блоки которые лежат в common.blocks необходимо выделить в common.css, а блоки которые лежат в бандлах выделить в отдельный для каждой страницы css например: index.css. Скажите пожалуйста как правильно это сделать
Теория: https://ru.bem.info/tools/bem/enb-bem-techs/build-merged-bundle/ Пример использования: https://github.com/bem/project-stub/tree/merged
если так то получается что у меня есть общий файл в котором все-все-все стили и отдельные файлы для страниц где дублируются те же стили только для каждой страницы отдельно. А как выделить именно те стили которые используются на всех страницах?
это вообще возможно сделать инструментами бэм?
Готовой технологии для ENB нет, но принцип тот же — каждая страница представляет собой декларацию, все отличие лишь в том, что вместо объединения (как в примере с merged-бандлом) нужно пересечение.
Базовая теория в целом про декларации: https://ru.bem.info/method/declaration/#Получение-общей-части-из-нескольких-деклараций Технология для вычитания деклараций: https://ru.bem.info/tools/bem/enb-bem-techs/api/#subtractdeps Ее исходники: https://github.com/enb-bem/enb-bem-techs/blob/master/techs/subtract-deps.js
Нужно по аналогии написать технологию, которая будет находить пересечение. Пример реализации из
bem-tools
: https://github.com/bem/bem-tools/blob/support/0.10.x/lib/techs/v2/deps.js.js#L394-L407Если потребуется помощь — готов поучаствовать.
Спасибо. Буду пробовать :)
@rush777 Интересную тему поднял. Тоже есть в планах так сделать, но руки пока не доходят