Хотелось бы узнать нет ли готового инструмента по сборке проекта на БЭМ Что бы из папки desktop.bundles прекладывать html, css, js и картинки в папку app Я ее просто заливаю на хостинг и сразу видно верстку, Сейчас начал писать task для gulp, но возможно у моей задачи есть решение и более верное. Слышал про desp но нечего не нашел где взять его.
@AndreyGladkov структура для деплоя обычно достаточно специфичная от проекта к проекту, поэтому чего-то универсального (кажется) нет. Решение с использованием
gulp
вполне хорошее. Если в процессе возникнут какие-то сложности — попробую помочь.И так я вернулся к этой задачи для меня пока не понятно как склеить один js и один css из всех что есть на странице удалив повторяющиеся блоки кода, борьщик умеет так склевать?
Нет, борщик не для этого. Скорее всего вам нужен merged-бандл: https://github.com/enb-bem/enb-bem-techs/blob/master/docs/build-merged-bundle.md См. также https://github.com/bem/bem-forum-content-ru/issues/352#issuecomment-89412374
Так я юзаю bem tools а не enb, и написал task для gulp чтобы он перекладывал весь html в папку app, насколько я понимаю мне нужен merged - бандл для gulp что бы в процессе перекладывания js и css собирать их в один файл, а так же какой либо task что бы менять пути у изображений на те что я укажу. Есть какие либо инструменты для такой реализации или же нужно перейти на enb и писать task для него что бы он собирал дополнительно все как я хочу?
gulp врядли сможет грамотно вырезать повторяющиеся блоки кода. Думаю лучше переходить на enb и настроить merged бандл по примерам. А вот переписывать пути к картинкам как раз умеет борщик и в качестве бонуса делать freeze статики. bem-tools, как я понял, скоро будет просто набором инструментов, а для сборки использовать тот же ENB.
@AndreyGladkov https://ru.bem.info/tools/bem/bem-tools/customization/#Сборка-merged-бандла-раньше-также-назывался-common
Пока bemtools оставил, потому как собираю им, пока enb не заработал. Вообщем что то я не понял, установил зависимости:
Сделал npm i и вы итоге при сборке,enb падает на deps.js [failed] [desktop.bundles/grid/grid.deps.js] deps
В чем может быть беда?
make.js
Покажи desktop.bundles/grid/grid.deps.js
http://pastebin.com/C5Nkcn2e он далее ругается на все страницы и все технологии, И выдает ошибку что мол свой-во тип - undefined Cannot read property 'tech' of undefined /node_modules/enb-bem-techs/lib/deps/deps-resolver.js:203:33 Отработали: file-provider levels bemjson-to-bemdecl Упал на deps files deps-by-tech-to-bemdecl bemhtml-old css-stylus browser-js html-from-bemjson css-autoprefixer file-merge borschik prepend-modules
Мой вариант: 1) использовать
merged
– бандл, причем во всех desktop.bundles/page-name использовать не_page-name.css
и_page-name.js
а сразу_merged.css
и_merged.js
2) Копировать собранные файлы вpackage.json
Вообщем проблема следующая, если убрать из уровней переопределения те уровни в которых блоки то enb все верно собирает, если же их оставить то падает как я писал выше. Через bemtools все собирается и работает, куда копать кто что думает?
Проблема в том что я не заюзал deps-old.
Столкнулся с проблемой
Выдает Concurrent techs for target: merged.bemdecl.js, techs: "merge-bemdecl" vs "bemjson-to-bemdecl" Брал код по ссылке выше и поправил его под себя.
@AndreyGladkov
Если сборка ломается на
deps
вместоdeps-old
, то, скорее всего, где-то в блочных deps.js-файлах встречаются циклические зависимости. Такие ситуацииdeps-old
разруливает относительно наугад, так что рано или поздно есть риск нарваться на ситуацию, когда порядок сборки окажется неверный и повлиять на него будет сложно. Так что пока проект еще небольшой, рекомендую найти циклические зависимости и исправить (при использованииdeps
в консоль должны сыпаться указания на нужные блоки).вот коммит, который включает сборку merged-бандла для
project-stub
. Предлагаю повторить для своего проекта максимально похоже.Да взял c project-stub твой коммит - все работает, спасибо, В консоль сыпятся названия бандлов, при использованни deps. Единственная ошибка что вылетает
@tadatuta Эта ошибка говорит о циклической зависимости? Это значит что один блок зависит от другого, а другой от одного?
@AndreyGladkov нет, здесь речь не о циклической зависимости. Скорее всего-то где-то в *.deps.js есть опечатка. Для отлова можно попробовать добавить
console.log
в node_modules/enb-bem-techs/lib/deps/deps-resolver.js вокруг 203 строки и потом поискать вхождения по проекту.