Всем привет. Посмотрел я вебинар 2х годичной давности https://www.youtube.com/watch?v=1GWoMnYldYc про БЭМ. Сильно заинтересовался я этой методологией. Решил сделать тестовый проект на полном бем стеке. Склонировал себе project-stub и начал делать, все замечательно не без подводных камней конечно но закончил я верстку. И пришло время собирать все в production, и вот тут то и засада. В том вебинаре был специальный таск для enb который собирал все основные файлы в отдельную папку, собирал туда все картинки и что самое главное переписывал все пути к картинкам относительно их нового расположения и нового имени. Я создал конфиг файл для борьщика, он мне все картинки собрал то, попробовал скопировать таск с этого вебинара и вставить к себе, но понятное дело это просто так не работает.
Вот сам таск:
var fse = require('fs-extra'),
path = require('path'),
glob = require('glob'),
rootDir = path.join(__dirname, '..');
config.task('dist', function (task) {
// build targets and copy it to 'dist' folder
function copyTargets(buildInfo) {
buildInfo.builtTargets.forEach(function (target) {
var src = path.join(rootDir, target),
dst = path.join(rootDir, 'dist', path.basename(target));
fse.copySync(src, dst);
});
}
return task.buildTargets(glob.sync('*.bundles/*'))
.then(function (buildInfo) {
copyTargets(buildInfo);
task.log('Dist was created.');
});
});
В package.json добавил строку в скрипты
"dist": "YENV=production enb make dist -n"
но если из консоли запускать
npm run dist
то выдает ошибку
"Exit status 1 Failed at the bem-project-stub@2.0.0 dist script 'YENV=production enb make dist -n'."
. Если запустить так
./node_modules/.bin/enb make dist
То выдает такую вот ошибку
Target not found: desktop.bundles/index
Хотя эта папка есть. Я решил что оно ищет эту папку, как не странно, в корне диска. Дописал вот так
'./' + glob.sync('.bundles/')
Начало выдавать такую вот ошибку
targets.forEach is not a function
Как я понял, просто функция buildTargets ожидает на вход параметр object а я его преобразовываю в string. Но тогда нужно вернуться на предыдущий шаг и понять почему выдает что "desktop.bundles/index" не существует.
Вообще вопрос заключается в том, как вы передаете ту же верстку по БЭМ с использование project-stub в production. Повторюсь, самая большая проблема как по мне, это пути к картинкам, фиг с ним, файлы то можно и руками собрать, их там все по 3 на каждую страницу, но вот как быть с путями для меня вопрос. Может кто поможет настроить сборщик корректно?