Есть такая структура:
src
├── modules
│ ├── header
│ │ ├── header.json
│ │ ├── header.pug
│ │ ├── header.js
│ │ └── header.scss
│ └── footer
│ ├── footer.json
│ ├── footer.pug
│ ├── footer.js
│ └── footer.scss
└── styles
└── styles.scss
И в modules лежат bem компоненты, и их может быть больше 150+
Я решил их подключать через glob:
@use 'src/modules/**/*.scss' as null;
И это все удобно, но порядок подключения компонентов иногда подводит. Компонент может быть элементом другого компонента, и случится так, что стили компонента будут иметь большую специфичность чем стили из микса элемента.
На примере:
<div class="card">
<div class="button card__button"></div>
</div>
button.scss
.button {
width: max-content;
}
card.scss
.card {
&__button {
width: 100%;
}
}
Порядок подключения стилей:
@use 'src/modules/**/*.scss' as null;
⇅
@use 'src/modules/card.scss';
@use 'src/modules/button.scss';
В следствии чего
card__button не сработает из за каскада подключения, чем стили
.button.
Какие есть решения данной проблемы? Как вы подключаете bem блоки?
Вручную думаю это очень сложно следить за порядком подключения 200 компонентов, у меня есть идеи как повышать специфичность в данном кейсе, но интересно как вы поступаете в данной ситуации))