Есть такая структура:
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 компонентов, у меня есть идеи как повышать специфичность в данном кейсе, но интересно как вы поступаете в данной ситуации))