bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Module "i-bem__dom": can't resolve dependence "i-bem" #82

Open vaseker opened 10 years ago

vaseker commented 10 years ago

Подскажите, пожалуйста, как победить сабж?

Сборка без кэша не ломается, однако i-bem не объявляется в клиентском js.

bem-core@2.4.0

https://yadi.sk/i/SCC4Kh0kc9ULq

tadatuta commented 10 years ago

Речь про сборку на основе project-stub или это кастомный конфиг? Если первое, то у меня не воспроизводится, а если второе, то было бы круто взглянуть на конфиг.

vaseker commented 10 years ago

Конфиг кастомный.

module.exports = function (config) {
    config.setLanguages(['ru']);

    config.nodes('desktop.bundles/*');

    config.mode('development', function () {
        config.nodeMask(/desktop.bundles\/.*/, function (nodeConfig) {
            nodeConfig.addTechs([
                [ require('./enb/techs/priv'),      { mode: 'development' } ],
                [ require('./enb/techs/bh-server'), { mode: 'development' } ],
                [ require('enb/techs/file-copy'), { sourceTarget: '?.{lang}.js', destTarget: '_?.{lang}.js' } ],
                [ require('enb/techs/file-copy'), { sourceTarget: '?.bh.js',   destTarget: '_?.bh.js' } ],
                [ require('enb/techs/file-copy'), { sourceTarget: '?.css',     destTarget: '_?.css' } ]
            ]);
        });
    });

    config.mode('production', function () {
        config.nodeMask(/desktop.bundles\/.*/, function (nodeConfig) {
            nodeConfig.addTechs([
                [ require('./enb/techs/priv'),      { mode: 'production' } ],
                [ require('./enb/techs/bh-server'), { mode: 'production' } ],
                [ require('enb/techs/borschik'), { sourceTarget: '?.{lang}.js', destTarget: '_?.{lang}.js', minify: true, freeze: true } ],
                [ require('enb/techs/borschik'), { sourceTarget: '?.bh.js',   destTarget: '_?.bh.js',     minify: true, freeze: true } ],
                [ require('enb/techs/borschik'), { sourceTarget: '?.css',     destTarget: '_?.css',     minify: true, freeze: true } ]
            ]);
        });
    });

    config.nodeMask(/desktop.bundles\/.*/, function (nodeConfig) {
        function getLevels() {
            return [
                { path: 'vendors/bem-core/common.blocks',              check: false },
                { path: 'vendors/bem-core/desktop.blocks',              check: false },
                { path: 'common.blocks',                               check: true },
                { path: 'desktop.blocks',                              check: true }
            ].map(function (l) { return config.resolvePath(l); });
        }

        nodeConfig.addTechs([
            [ require('enb/techs/levels'), { levels: getLevels() } ],
            [ require('enb/techs/file-provider'), { target: '?.bemdecl.js' } ],
            require('enb/techs/deps-old'),
            require('enb/techs/files'),
            [ require('./enb/techs/priv-i18n'), { lang: '{lang}' } ],
            [ require('enb/techs/i18n-merge-keysets'), { lang: 'all' } ],
            [ require('enb/techs/i18n-merge-keysets'), { lang: '{lang}' } ],
            [ require('enb/techs/i18n-lang-js'), { lang: 'all' } ],
            [ require('enb/techs/i18n-lang-js'), { lang: '{lang}' } ],
            [ require('enb/techs/js-i18n'), { lang: '{lang}', target: '?.{lang}.pre.js' } ],
            [ require('enb/techs/bemdecl-from-deps-by-tech'), { target: '?.client.bemdecl.js', sourceTech: 'js', destTech: 'bemhtml' } ],
            [ require('enb/techs/deps-old'),      { bemdeclTarget: '?.client.bemdecl.js', depsTarget: '?.client.deps.js' } ],
            [ require('enb/techs/files'),         { filesTarget: '?.client.files', dirsTarget: '?.client.dirs', depsTarget: '?.client.deps.js' } ],
            [ require('enb-bh/techs/bh-client'),      { filesTarget: '?.client.files', target: '?.client.bh.js' } ],
            [ require('./enb/techs/priv-client'), { filesTarget: '?.client.files', target: '?.client.priv.js' } ],
            [ require('enb/techs/file-merge'),    { sources: ['?.client.priv.js', '?.client.bh.js'], target: '?.bh.js' } ],
            [ require('enb-modules/techs/prepend-modules'), {
                target: '?.{lang}.js',
                source: '?.{lang}.pre.js'
            } ],
            require('enb/techs/css')
        ]);

        nodeConfig.addTargets([
            '?.priv.{lang}.js',
            '?.bemhtml.js',
            '_?.bh.js',
            '_?.{lang}.js',
            '_?.css'
        ]);
    });
};
blond commented 10 years ago

В bem-core клиентский JavaScript лежит не только в файлах с js суффиксами, но и в vanilla.js и browser.js.

enb/techs/js-i18n технология по умолчанию собирает файлы только с js суффиксами, поэтому нужно добавить опцию sourceSuffixes чтобы в сборку попадали все файлы.

[ require('enb/techs/js-i18n'), { 
    lang: '{lang}', target: '?.{lang}.pre.js' },
    sourceSuffixes: ['vanilla.js', 'browser.js', 'js']
],
vaseker commented 10 years ago

@andrewblond, спасибо! Все заработало.

tadatuta commented 10 years ago

Переоткрою issue, чтобы пост отображался на форуме.

@tavriaforever Коля, нам нужно добавить в список приоритетных задачу от @zxqfox про возможность закрывать issues без того, чтобы они исчезали с форума.

qfox commented 10 years ago

@tadatuta :smiling_imp:

tavriaforever commented 10 years ago

ок, запланировал на ближайшие релизы