Верстка по BEM. Файловая структура. Как присваивать классы независимому блоку?
Дисклеймер: Я не гуру БЭМа и давно не заглядывал в их доки. Данные стоит перепроверить.
На мой взгляд, есть 3 варианта, которые не противоречат методологии:
1) Кладем .logo внутрь элемента .header__logo, стилизуем header__logo. Всё просто, не требует ничего специального.
2) Вешаем .header_logo на .logo . Шаблонизатор (в данном случае - галп плагин) должен уметь прокидывать пропсы к подключаемым файлам, т.е. должно выглядеть типа `@include('../blocks/logo/logo.html', {"className": "header__logo"})`. По БЭМу блок может быть элементом другого блока
3) Переопределяем стили типа `.header .logo`. БЭМ, насколько я помню, тоже позволяет переопределять стили в зависимости от контекста.
4) Делаем модификатор, например `logo--highlited`, который уже стилизуем в рамках блока. Так же шаблонизатор должен это уметь.
Единственно-правильного способа, как мне кажется, нет.
Для позиционирования я, обычно, применяю 1-й способ. Для изменений стиля/цветов только в данном конкретном контексте - 2 или 3.
Если изменение требуется не только в контексте одного блока, а где-то еще - то 4.
Вообще-то блоки независимы именно потому, что они должны выглядеть одинаково в разных частях страницы. Если блок должен иметь какой-то особый внешний вид "по месту", то это должны быть разные блоки. БЭМ не допускает селекторы вида: .блок1 .блок2 {...}
Если сам блок допускает какие-то режимы своего отображения (скажем, раскрывающееся меню может раскрываться в разные стороны), то это может задаваться с помощью БЭМ-модификаторов блока, но не снаружи.