Привет, дорогой друг. Я хочу поделиться историей развития сборки в БЭМ.
Если ты из тех, кто совсем не любит читать большие тексты, то знай «Собирать проекты на БЭМ проще, чем скушать пирожок».
Заинтригован? Приходи на BEMup.
А теперь суровые подробности.
Первый кусочек пирога
В первом подходе мы решили проверить, возможно ли собрать самый простой БЭМ проект на чём-то, кроме ENB.
Под роль самого простого проекта лучше всего подходит project-stub: один бандл, минимум зависимостей, минимум кода.
В качестве чего-то, кроме ENB, мы выбрали Gulp. Как минимум это один из самых популярных инструментов для сборки с богатой «экосистемой» плагинов. Кроме того, Gulp не является готовым инструментом в отличии от большинства конкуретнов, это фреймворк для написания своих систем сборок. Такие его особенности дают определённую гибкость.
Так появился пакет gulp-bem. Что он умеет делать? Правильно, собирать project-stub
и ничего больше.
Мы тогда даже не ленились и написали постик об этом.
Гипотеза о том, что БЭМ проект можно собрать без использования ENB подтверждена. Можно скушать первый кусочек пирога.
Второй кусочек пирога и бутылка рома
Во втором подходе мы решили, что важно проверить ещё одну гипотезу. Состоит она из двух частей:
- Можно ли собирать реальный проект? Посложнее, чем
project-stub
. - Можно ли собирать примеры, тесты и документаци?
Стандартные двухдневные посиделки привели нас к ряду идей.
Идея атомарного модуля для получения исходников
Модуль: gulp-bem-src.
Почти как gulp.src()
, только bem.src()
.
Ну вы же знаете, что слово БЭМ делает любой модуль как минимум в 2 раза лучше, а тут даже в 3 раза получилось.
Идея о создании бандлов из чего угодно
Модули: gulp-bem-bundler-fs, gulp-bem-bundler-examples.
Бандлы, они как алкоголь, их можно добыть из чего угодно, даже из других бандлов.
Идея об универсальной сборке бандлов
Модуль: gulp-bem-bundle-builder.
Один раз придумали, как собирать ваш CSS и собирайте его так хоть для документации, хоть для вашей бабушки.
Хелперы
Заодно появились хелперы для сборки шаблонов: gulp-bem-xjst, gulp-bh.
В этот раз постик мы не написали. Но пирожок всё равно заслужили, правда-правда!
Пирожок SDK
Между делом появился замечательный BEM SDK — набор атомарных модулей. Каждый модуль решает одну задачу.
В третьем подходе мы делали всё, чтобы наш малыш (BEM SDK) совсем повзрослел. И кажется, ещё совсем чуть-чуть и он отправится в мир похоти и разврата (ENB в живых сервисах).
Вот только некоторые крепыши: bem-naming, bem-walk, bem-decl, bem-graph, bem-deps, bem-bundle.
Пока пирожок не заветрил
Чтобы всё произошло, осталось не так уж и много:
- Начать использовать BEM SDK в сервисах.
- Дописать недостающие хелперы для
i18n
,borschik
, и т.д. - Написать генераторы бандлов для тестов, примеров и документации.
1-2 октября мы соберёмся, чтобы совершить ещё один подход к снаряду под номером четыре.
О том, что получилось обязательно расскажем.