Добрый! Есть таск
function less() {
return bundler('*.bundles/*')
.pipe(builder({
less: bundle => {
bundle.src('less')
.pipe(gulpLess())
.pipe(postcss([
postcssImport(),
postcssUrl({ url: 'inline' }),
autoprefixer({browsers: prefixes}),
postcssReporter()
]))
.pipe(concat(bundle.name + '.min.css'))
.pipe(gulpif(isProd, csso()))
}
}))
.on('error', console.error)
.pipe(debug())
.pipe(gulp.dest(file => path.dirname(file.path)));
}
Крашится
TypeError: Cannot read property 'block' of undefined
at data.forEach.dep (/home/arsen/dev/nodeprojects/njs_nian/node_modules/@bem/deps/lib/formats/deps.js/parser.js:29:37)
at Array.forEach (native)
at depsData.forEach.record (/home/arsen/dev/nodeprojects/njs_nian/node_modules/@bem/deps/lib/formats/deps.js/parser.js:27:14)
at Array.forEach (native)
at parse (/home/arsen/dev/nodeprojects/njs_nian/node_modules/@bem/deps/lib/formats/deps.js/parser.js:23:14)
at Promise (/home/arsen/dev/nodeprojects/njs_nian/node_modules/@bem/deps/lib/parse.js:11:25)
at /home/arsen/dev/nodeprojects/njs_nian/node_modules/@bem/deps/lib/parse.js:9:16
Есть каталог common.blocks
в корне, там button, внутри .js файл, .browser.js, .less, .deps.js
и Page, в нем те же технологии
Билдер
const builder = Builder({
levels: [
'common.blocks',
'desktop.blocks'
],
techMap: {
bemhtml: ['bemhtml.js'],
js: ['js'],
less: ['less']
}
});
Что я делаю не так? Хотелось бы поподробнее узнать о библиотеках
const Builder = require('gulp-bem-bundle-builder');
const bundler = require('gulp-bem-bundler-fs');
И можно ли с помощью них полноценно собирать БЭМ проекты на gulp?
Судя по тексту ошибки, закралась опечатка где-то в deps.js-файле.
Завёл https://github.com/bem-sdk/bem-deps/issues/90 Попробуем улучшить это место
Спасибо, поудалял deps'ы, теперь gulp говорит что таск не завершен
[12:16:48] The following tasks did not complete: default [12:16:48] Did you forget to signal async completion?
Вызываю так:
gulp.task('default', less);
Код less выше..
Вроде таск возвращает стрим..
Спасибо еще раз! Но еще хотелось бы узнать почему именно так? на MDN читал, но все равно этот момент не очень понятен..
@nanervax Потому что так придумали :-)
В конструкции
() => {}
,{}
является блоком кода, который может иметь выражениеreturn ...
, а может не иметь. В то время как в конструкции() => (...)
, возвращается результат выполнения...
.x => { return x + 1; }
это аналогx => x + 1
, но неx => { x + 1 }
Запомню эту тонкость)