Войти с помощью github
Форум /

Предлагаю способ решения проблемы коллизий имён блоков. Возникнуть такая ситуация может когда нам нужно использоть несколько библиотек, в каждой из которых есть блоки с одинаковым названием (но разные по реализации) и нам нужно использовать либо какой-то один из них, либо оба этих блока как 2 абсолютно разных.


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

 

И конечно же пример: у нас есть библиотека с красивой большой кнопкой, которую надо использовать в нескольких особенных случаях для сайта, для всех остальных случаев мы хотим использовать кнопку из bem-controls. Тогда при настройке бандла мы укажем алисы для каждой из них, синтаксис может выглядеть примерно так:


exports.getConfig=function() {

    returnBEM.util.extend(this.__base()||{},{

        bundleBuildLevels:this.resolvePaths([

            '../../bem-bl/blocks-common',

            '../../bem-bl/blocks-desktop',

            {

                path: 'amazing-controls/desktop.blocks',

                aliases: [

                    { 'name' : 'button', 'as' : 'b-amazing-button' }

                ]

            },

            {

                path: 'bem-controls/desktop.blocks',

                aliases: [

                    { 'name' : 'button', 'as' : 'b-ya-button' }

                ]

            },

            '../../desktop.blocks'

        ])

    }) ;

};