Добрый день, я тут немного запутался с технологиями и префиксами.
У меня нестандартный проект, объяснять его историю – очень долго и больно) Проект уже в продакшене, мы в него внедряем БЭМ. В общем, все блоки лежат в папке local/blocks.
Папки .bem изначально не было, я добавил папку и пустой levels.js в local/blocks/.bem/levels.js.
Теперь при попытке выполнить bem create -l local/blocks -b 'b-404' -t deps.js получаю: WARNING! Tech module "deps.js" at /usr/local/lib/node_modules/bem/lib/techs/deps.js.js is using API V1. Tech modules API V1 is not recommended to use, because it is slow. Please use tech modules API V2, it makes your build process faster! Instructions for migrating to API V2: http://git.io/gbLDOA
Уже неплохой результат.
Вопроса два:
- Как можно задать префиксы блоков, чтобы не писать все команды bem create -l local/blocks?
- Как нужно правильно добавить технологии чтобы они были v2? На проекте используются compass-scss (собирается через gulp), js, deps.js, js-i
Заранее спасибо!
Вот здесь можно посмотреть, как добавляются технологии версии 2.
Наверное, если вы только начинаете внедрять БЭМ, стоит вам сразу посоветовать для сборки использовать не bem-tools, которые уже давно не поддерживаются, а enb.
bem create
понимает контекст, так что можно перейти вlocal/blocks
и вызыватьbem create
прямо там. Ну и всякие консольные шоткаты. Не исключено, что можно и конфиг умудриться написать, но я сходу не знаю как.Для всего перечисленного, кроме
compass-scss
все правильно подключено в https://github.com/bem/project-stub/blob/bem-core/.bem/ — предлагаю скопипастить оттуда. Сами технологии лежат https://github.com/bem/bem-tools/tree/support/0.9.x/lib/techs/v2@apsavin: у нас сборки как таковой нет, блоки лежат в папках в local/blocks, например local/blocks/services, а в рантайме эти блоки подключаются CMS-кой в html (services.css и services.min.js).
@tadatuta: на счет контекста, понял!
Я так понимаю, что в моем случае (без сборки) мне версия технологии до лампочки. Мне пока главное, чтобы не приходилось папочки и файлики руками создавать, а можно было через bem create сдлать блоки, элемент, добавить технологию в блок...
Тогда возникает такой вопрос: если я хочу, чтобы файл .scss создавался на основе базовой технологии, но с определенным шаблоном содержимого, например .block-name {}. Это тоже в технологиях правится?
Да всё так. Примеры шаблонов создаваемых файлов можно найти там же. А пример того, как подключить — в project-stub
Спасибо! Сейчас команда bem create -l local/blocks -b breadcrumb заработала и даже не ругается, но теперь у меня загадка как так впихнуть технологию scss, чтоб по-красивее было?
Основной юзкейс меня юзкейс для bem-tools следующий:
Сейчас процессинг работает на gulp'e, он смотрит в local/blocks и следит за .js и .scss. Gulp – потому что scss у нас на compass. Конечно, при большом количестве блоков гульп начинает работать медленно и неоптимально, если подскажете как это можно сделать лучше – будет круто.
Если
scss
каждого блока не является независимым (например, использует глобальные переменные), то, кажется, тут ничего не сэкономить: поменялся исходник — нужно пересобратьcss
. Миграция сgulp
наbem-tools
илиENB
позволит собирать только те файлы, которые реально используются в запрашиваемом бандле, но если на проекте не так много страниц, то вряд ли разницу в скорости можно будет почувствовать.