bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

bem-tools: запутался с технологиями и префиксами #444

Open mbakirov opened 9 years ago

mbakirov commented 9 years ago

Добрый день, я тут немного запутался с технологиями и префиксами.

У меня нестандартный проект, объяснять его историю – очень долго и больно) Проект уже в продакшене, мы в него внедряем БЭМ. В общем, все блоки лежат в папке 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

Уже неплохой результат.

Вопроса два:

  1. Как можно задать префиксы блоков, чтобы не писать все команды bem create -l local/blocks?
  2. Как нужно правильно добавить технологии чтобы они были v2? На проекте используются compass-scss (собирается через gulp), js, deps.js, js-i

Заранее спасибо!

apsavin commented 9 years ago

Вот здесь можно посмотреть, как добавляются технологии версии 2.

Наверное, если вы только начинаете внедрять БЭМ, стоит вам сразу посоветовать для сборки использовать не bem-tools, которые уже давно не поддерживаются, а enb.

tadatuta commented 9 years ago

Как можно задать префиксы блоков, чтобы не писать все команды bem create -l local/blocks?

bem create понимает контекст, так что можно перейти в local/blocks и вызывать bem create прямо там. Ну и всякие консольные шоткаты. Не исключено, что можно и конфиг умудриться написать, но я сходу не знаю как.

Как нужно правильно добавить технологии чтобы они были v2? На проекте используются compass-scss (собирается через gulp), js, deps.js, js-i

Для всего перечисленного, кроме 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

mbakirov commented 9 years ago

@apsavin: у нас сборки как таковой нет, блоки лежат в папках в local/blocks, например local/blocks/services, а в рантайме эти блоки подключаются CMS-кой в html (services.css и services.min.js).

@tadatuta: на счет контекста, понял!

Я так понимаю, что в моем случае (без сборки) мне версия технологии до лампочки. Мне пока главное, чтобы не приходилось папочки и файлики руками создавать, а можно было через bem create сдлать блоки, элемент, добавить технологию в блок...

Тогда возникает такой вопрос: если я хочу, чтобы файл .scss создавался на основе базовой технологии, но с определенным шаблоном содержимого, например .block-name {}. Это тоже в технологиях правится?

tadatuta commented 9 years ago

Да всё так. Примеры шаблонов создаваемых файлов можно найти там же. А пример того, как подключить — в project-stub

mbakirov commented 9 years ago

Спасибо! Сейчас команда bem create -l local/blocks -b breadcrumb заработала и даже не ругается, но теперь у меня загадка как так впихнуть технологию scss, чтоб по-красивее было?

Основной юзкейс меня юзкейс для bem-tools следующий:

Сейчас процессинг работает на gulp'e, он смотрит в local/blocks и следит за .js и .scss. Gulp – потому что scss у нас на compass. Конечно, при большом количестве блоков гульп начинает работать медленно и неоптимально, если подскажете как это можно сделать лучше – будет круто.

tadatuta commented 9 years ago

Если scss каждого блока не является независимым (например, использует глобальные переменные), то, кажется, тут ничего не сэкономить: поменялся исходник — нужно пересобрать css. Миграция с gulp на bem-tools или ENB позволит собирать только те файлы, которые реально используются в запрашиваемом бандле, но если на проекте не так много страниц, то вряд ли разницу в скорости можно будет почувствовать.