Open awinogradov opened 10 years ago
Привет!
?.bemjson.js
, а по твоему описанию, похоже, что ты хочешь писать ?.bemdecl.js
сам. Расскажи подробнее что хочешь сделать, какие версии используешь и что в итоге попадает в ?.deps.js
таргет.project-stub
, то должно подойти: https://github.com/bem/project-stub/blob/bem-core/.enb/make.jsmerged
-бандла: https://github.com/enb-make/enb#%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-merged-common-%D0%B1%D0%B0%D0%BD%D0%B4%D0%BB%D0%B0На всякий случай напомню, что в любой непонятной ситуации не забываем чистить кэш rm -rf .enb/tmp
или собирать с игнором кэша enb make -n
. Можно ещё enb make clean
для очистки всего ранее собранного.
@andrewblond В первом случае я и хочу собирать зависимости по bemjson. Похоже проблема была в кэше. Во-втором, попробую конфиг из project-stub, спасибо! Мержед будет работать для разных уровней?
Задача примерно такая: на одном уровне есть два бандла, хочу в одном собирать все по bemjson, ничего особенного, но тут не тянулись зависимости (точно как в примере, что я дал). А в другом бандле я хочу собирать только bemhtml и bemtree для клиента по декларации. Вроде ничего необычного:)
Сейчас сборка для всех бандлов описана одинакого — config.nodes('project.bundles/*' /*...*/);
.
Нужно поразному задекларировать сборку разных типов бандлов.
Для этого вначале декларируем первую группу бандлов:
config.nodes(['project.bundles/bundle-1', 'project.bundles/bundle-2'] /*...*/);
а затем вторую:
config.nodes(['project.bundles/bundle-2', 'project.bundles/bundle-3'] /*...*/);
То, что будет совпадать можно вынести в обзую декларацию:
config.nodes('project.bundles/*' /*...*/);
Но для начала советую копипастить, убедиться, а потом уже выделять общие части.
@andrewblond Блин, Андрюх:) Да, надо разные конфиги для бандлов, вопрос был какие:)
Примерно так (не проверял):
config.nodes('*.bundles/bundle-1', function(nodeConfig) {
nodeConfig.addTechs([
// essential
[tech.levels, { levels: getLevels(config) }],
[tech.fileProvider, { target: '?.bemjson.js' }],
[tech.bemdeclFromBemjson],
[tech.deps],
[tech.files],
// css
[tech.cssStylus, { target: '?.noprefix.css' }],
[tech.cssAutoprefixer, {
sourceTarget: '?.noprefix.css',
destTarget: '?.css',
browserSupport: getBrowsers()
}],
// bemhtml
[tech.bemhtml, { devMode: process.env.YENV === 'development' }],
[tech.htmlFromBemjson],
// client bemhtml
[tech.bemdeclFromDepsByTech, {
target: '?.bemhtml.bemdecl.js',
sourceTech: 'js',
destTech: 'bemhtml'
}],
[tech.deps, {
target: '?.bemhtml.deps.js',
sourceDepsFile: '?.bemhtml.bemdecl.js'
}],
[tech.files, {
target: '?.bemhtml.deps.js',
filesTarget: '?.bemhtml.files',
dirsTarget: '?.bemhtml.dirs'
}],
[tech.bemhtml, {
target: '?.browser.bemhtml.js',
filesTarget: '?.bemhtml.files',
devMode: process.env.YENV === 'development'
}],
// js
[tech.browserJs],
[tech.fileMerge, {
target: '?.pre.js',
sources: ['?.browser.bemhtml.js', '?.browser.js']
}],
[tech.prependYm, { source: '?.pre.js' }]
]);
nodeConfig.addTargets(['?.html', '?.css', '?.js']);
});
config.nodes('*.bundles/bundle-2', function(nodeConfig) {
nodeConfig.addTechs([
// essential
[tech.levels, { levels: getLevels(config) }],
[tech.fileProvider, { target: '?.bemdecl.js' }],
[tech.deps],
[tech.files],
// client bemhtml
[tech.bemdeclFromDepsByTech, {
target: '?.bemhtml.bemdecl.js',
sourceTech: 'js',
destTech: 'bemhtml'
}],
[tech.deps, {
target: '?.bemhtml.deps.js',
sourceDepsFile: '?.bemhtml.bemdecl.js'
}],
[tech.files, {
target: '?.bemhtml.deps.js',
filesTarget: '?.bemhtml.files',
dirsTarget: '?.bemhtml.dirs'
}],
[tech.bemhtml, {
target: '?.browser.bemhtml.js',
filesTarget: '?.bemhtml.files',
devMode: process.env.YENV === 'development'
}],
// client bemtree
[tech.bemdeclFromDepsByTech, {
target: '?.bemtree.bemdecl.js',
sourceTech: 'js',
destTech: 'bemtree'
}],
[tech.deps, {
target: '?.bemtree.deps.js',
sourceDepsFile: '?.bemtree.bemdecl.js'
}],
[tech.files, {
target: '?.bemtree.deps.js',
filesTarget: '?.bemtree.files',
dirsTarget: '?.bemtree.dirs'
}],
[tech.bemtree, {
target: '?.browser.bemtree.js',
filesTarget: '?.bemtree.files',
devMode: process.env.YENV === 'development'
}],
// merge bemhtml & bemtree + ym
[tech.fileMerge, {
target: '?.template.pure.js',
sources: ['?.browser.bemhtml.js', '?.browser.bemtree.js']
}],
[tech.prependYm, { source: '?.template.pure.js', target: '?.template.js' }]
]);
nodeConfig.addTargets(['?.template.js']);
});
function getLevels(config) {
return [
{ path : 'libs/bem-core/common.blocks', check : false },
{ path : 'libs/bem-components/common.blocks', check : false },
{ path : 'libs/bem-components/desktop.blocks', check : false },
{ path : 'libs/forms/default.blocks', check : false },
{ path : 'libs/forms/design/default.blocks', check : false },
{ path : 'libs/forms/design/themed.blocks', check : false },
'common.blocks',
'project.blocks'
].map(function(level) {
return config.resolvePath(level);
});
}
function getBrowsers() {
return [
'last 2 versions',
'ie 10',
'opera 12.16'
];
}
Спасибо!!!
Всем привет!
У меня есть три вопроса, помогите, кто может:
Буду премного благодарен за любые пинки, я уже 3 часа промучался, ENB конфигуратор не предлагать:)