Closed melihovv closed 3 years ago
Со стилями будут проблемы. Из коробки это не разруливается.
Можно добавить в сборку добавление какого-нибудь префикса к классам
@melihovv теоретически, если дописать правильный bem-mv
, то можно договориться до специальной декларации подключения библиотек lib-decl.js
, где будет что-то типа (фантазирую, ничего такого в природе не существует):
module.exports = {
lib: 'lib1',
levels: ['common.blocks', 'desktop.blocks'],
entities: [
{ block: 'button', as: 'lib2-button' },
// ...
]
}
и тогда на момент установки библиотеки тул проитерируется по этой декларации и позовет libDecl.entities.forEach(entity => bemMv(entity.block, entity.as))
.
Но по факту написать такой bem-mv
весьма нетривиально, т.к. мало просто переименовать все файлы блока и поправить все вхождения в файлах блока во всех технологиях. Потребуется еще во всех остальных файлах данной библиотеки переименовать все упоминания данного блока в разных технологиях.
В принципе, когда, наконец, сойдется история про построение обратных депсов, задача будет теоретически решаема, но опять же, при условии, что пользователь не делает чего-то странного с именами блоков в своем коде:
block('b' + ['l', 'o', 'c'].join('') + 'k')();
Если в
lib1
и вlib2
есть блок с одним и тем же названием button, есть ли способ у себя на проекте использовать блоки из обеих библиотек? Например,lib1/button
иlib2/button
. Такой вопрос уже задавали здесь https://ru.bem.info/forum/-234/, но ответов я не увидел.