Open karalkou opened 8 years ago
Так и не смог отловить, в чем проблема.
17:52:04.734 - [rebuild] [desktop.bundles\merged\merged.js] file-merge
17:52:05.020 - [failed] [desktop.bundles\merged\_merged.css] borschik
17:52:05.021 - build failed
Error: No such file or directory: D:\_my-work-tasks\project\form.blocks\checkbox\__unreal\img\checkbox_empty.png
-> D:\_my-work-tasks\project\desktop.bundles\merged\merged.css
at exports.Tech.base.Tech.inherit.File.exports.File.base.File.inherit.processLink (D:\_my-work-tasks\project\node_modules\borschik\lib\techs\css-base.js:54:27)
at exports.Tech.base.Tech.inherit.File.exports.File.base.File.inherit.processLink (D:\_my-work-tasks\project\node_modules\borschik\lib\techs\css.js:104:68)
at res.(anonymous function).result [as processLink] (D:\_my-work-tasks\project\node_modules\borschik\node_modules\inherit\lib\inherit.js:82:40)
at exports.Tech.INHERIT.File.exports.File.INHERIT.process (D:\_my-work-tasks\project\node_modules\borschik\lib\tech.js:139:54)
at exports.Tech.base.Tech.inherit.File.exports.File.base.File.inherit.processInclude (D:\_my-work-tasks\project\node_modules\borschik\lib\techs\css.js:97:61)
at exports.Tech.INHERIT.File.exports.File.INHERIT.process (D:\_my-work-tasks\project\node_modules\borschik\lib\tech.js:139:26)
at exports.Tech.INHERIT.process (D:\_my-work-tasks\project\node_modules\borschik\lib\tech.js:34:56)
at Cmd.<anonymous> (D:\_my-work-tasks\project\node_modules\enb-borschik\node_modules\borschik\lib\coa.js:138:38)
at D:\_my-work-tasks\project\node_modules\enb-borschik\node_modules\borschik\node_modules\coa\lib\cmd.js:483:22
at _fulfilled (D:\_my-work-tasks\project\node_modules\enb-borschik\node_modules\borschik\node_modules\coa\node_modules\q\q.js:798:54)
Полагаю, что в данном случае какая-то проблема с borschik... Может, кто подскажет, где я делаю не тру вещи? Вроде, все правильно делал:
// 1. в корне проекта лежит конфигурация .borschik
{
"freeze_paths": {
"img/**": "img",
"**/*.blocks/**/fonts/**" : "fonts",
"**/*.blocks/**": ":encodeURIComponent:",
"**/*.blocks/**": ":base64:"
}
}
// 2. конфигурация enb
var fs = require('fs'),
path = require('path'),
techs = {
// essential
fileProvider: require('enb/techs/file-provider'),
fileMerge: require('enb/techs/file-merge'),
// optimization
borschik: require('enb-borschik/techs/borschik'),
// css
stylus: require('enb-stylus/techs/stylus'),
// js
browserJs: require('enb-js/techs/browser-js'),
// bemtree
// bemtree: require('enb-bemxjst/techs/bemtree'),
// bemhtml
bemhtml: require('enb-bemxjst/techs/bemhtml'),
bemjsonToHtml: require('enb-bemxjst/techs/bemjson-to-html')
},
enbBemTechs = require('enb-bem-techs'),
merged = require('./techs/merged'),
levels = [
{ path: 'libs/bem-core/common.blocks', check: false },
{ path: 'libs/bem-core/desktop.blocks', check: false },
'desktop.blocks',
'form.blocks',
'template.blocks'
];
module.exports = function(config) {
var isProd = process.env.YENV === 'production',
mergedBundleName = 'merged',
pathToMargedBundle = path.join('desktop.bundles', mergedBundleName);
fs.existsSync(pathToMargedBundle) || fs.mkdirSync(pathToMargedBundle);
merged(config, pathToMargedBundle);
config.nodes('*.bundles/*', function(nodeConfig) {
var isMergedNode = path.basename(nodeConfig.getPath()) === mergedBundleName;
isMergedNode || nodeConfig.addTechs([
[techs.fileProvider, { target: '?.bemjson.js' }],
[enbBemTechs.bemjsonToBemdecl]
]);
nodeConfig.addTechs([
// essential
[enbBemTechs.levels, { levels: levels }],
[enbBemTechs.deps],
[enbBemTechs.files],
// css
[techs.stylus, {
target: '?.css',
sourcemap: false,
autoprefixer: {
browsers: ['last 20 versions', 'IE > 8', 'Opera > 11', 'Firefox >= 5', 'Chrome > 10']
}
}],
// bemtree
// [techs.bemtree, { sourceSuffixes: ['bemtree.js', 'bemtree'] }],
// bemhtml
[techs.bemhtml, { sourceSuffixes: ['bemhtml.js', 'bemhtml'] }],
[techs.bemjsonToHtml],
// client bemhtml
[enbBemTechs.depsByTechToBemdecl, {
target: '?.bemhtml.bemdecl.js',
sourceTech: 'js',
destTech: 'bemhtml'
}],
[enbBemTechs.deps, {
target: '?.bemhtml.deps.js',
bemdeclFile: '?.bemhtml.bemdecl.js'
}],
[enbBemTechs.files, {
depsFile: '?.bemhtml.deps.js',
filesTarget: '?.bemhtml.files',
dirsTarget: '?.bemhtml.dirs'
}],
[techs.bemhtml, {
target: '?.browser.bemhtml.js',
filesTarget: '?.bemhtml.files',
sourceSuffixes: ['bemhtml.js', 'bemhtml']
}],
// js
[techs.browserJs, { includeYM: true }],
[techs.fileMerge, {
target: '?.js',
sources: ['?.browser.js', '?.browser.bemhtml.js']
}],
// borschik
[techs.borschik, { sourceTarget: '?.js', destTarget: '_?.js', minify: isProd }],
[techs.borschik, { sourceTarget: '?.css', destTarget: '_?.css', tech: 'cleancss', minify: isProd }],
]);
nodeConfig.addTargets(isMergedNode ? ['_?.css', '_?.js'] : ['?.html']);
});
};
@karalkou Есть возможность опубликовать проект на гитхаб, чтобы можно было посмотреть предметно?
может, банально mustDeps
не прописали для блока, который должен быть загружен до его использования в темлейте?
@tadatuta Почистил и выложил https://github.com/karalkou/project_building
@mitrey вполне возможно) Проверял такую возможность, не нашел этого места
@karalkou смотрите в каком блоке подключается блок .link и смотрите его deps.js Если блок используется вне bemjson - он должен быть явно указан как зависимость в deps.js
@tadatuta Спасибо. Стыдно, конечно, что сам не нашел. Я правильно понимаю, что найти эти ошибки можно только смотря на ругающуюся консоль и перелопачивая вручную проект? Сам правил в некоторых местах, но все найти не сумел. И ещё вопрос не по теме: что сделать, чтобы увидеть "вживую" файлы технологии levels?
@mitrey Спасибо)
Я правильно понимаю, что найти эти ошибки можно только смотря на ругающуюся консоль и перелопачивая вручную проект? Сам правил в некоторых местах, но все найти не сумел.
Да, но там же буквально нужные строки/файлы в логе видны.
что сделать, чтобы увидеть "вживую" файлы технологии levels
Например, найти в node_modules
пакет enb-bem-techs
и после https://github.com/enb/enb-bem-techs/blob/v2.2.1/techs/levels.js#L118 добавить console.log(new Levels(levelList))
.
Выхлоп примерно такой:
{ items:
[ { _path: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks',
blocks:
{ clearfix:
{ name: 'clearfix',
files:
[ { name: 'clearfix.css',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/clearfix/clearfix.css',
suffix: 'css',
mtime: 1462898160000,
isDirectory: false },
{ name: 'clearfix.en.title.txt',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/clearfix/clearfix.en.title.txt',
suffix: 'en.title.txt',
mtime: 1462898160000,
isDirectory: false },
{ name: 'clearfix.ru.md',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/clearfix/clearfix.ru.md',
suffix: 'ru.md',
mtime: 1462898160000,
isDirectory: false },
{ name: 'clearfix.ru.title.txt',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/clearfix/clearfix.ru.title.txt',
suffix: 'ru.title.txt',
mtime: 1462898160000,
isDirectory: false } ],
dirs: [],
elements: {},
mods: {} },
cookie:
{ name: 'cookie',
files:
[ { name: 'cookie.js',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/cookie/cookie.js',
suffix: 'js',
mtime: 1462898160000,
isDirectory: false },
{ name: 'cookie.ru.md',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/cookie/cookie.ru.md',
suffix: 'ru.md',
mtime: 1462898160000,
isDirectory: false },
{ name: 'cookie.spec.js',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/cookie/cookie.spec.js',
suffix: 'spec.js',
mtime: 1462898160000,
isDirectory: false } ],
dirs: [],
elements: {},
mods: {} },
dom:
{ name: 'dom',
files:
[ { name: 'dom.deps.js',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/dom/dom.deps.js',
suffix: 'deps.js',
mtime: 1462898160000,
isDirectory: false },
{ name: 'dom.js',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/dom/dom.js',
suffix: 'js',
mtime: 1462898160000,
isDirectory: false },
{ name: 'dom.ru.md',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/dom/dom.ru.md',
suffix: 'ru.md',
mtime: 1462898160000,
isDirectory: false },
{ name: 'dom.spec.js',
fullname: '/Users/tadatuta/projects/bem/project-stub/libs/bem-core/common.blocks/dom/dom.spec.js',
suffix: 'spec.js',
mtime: 1462898160000,
isDirectory: false } ],
dirs: [],
elements: {},
mods: {} },
и так далее.
@tadatuta а что изменилось при переходе со старых инструментов на новые? В плане неправильно прописанные пути до изображений, лежащих в блоках в старой сборке, съедаются без возмущений, а при запуске проекта с новыми - выскакивают ошибки.
Похоже, что какой-то блок зависит от link (используется @extend ".link"), но в сборку link попадает позже
Вопросы:
И ещё, понимаю, что торможу, но есть какой-то способ сохранять комментарии разработчика в итоговом файле css?