Closed Hurtsok closed 8 years ago
Привет!
Пробовал ли собирать без учёта кэша enb make -n
?
@blond
Да. Сначала запускал enb make clean
затем enb make -n
. Ошибок нет, но сборка кривая
Не похоже на проблемы enb-bem-techs
. Работа этого пакета заканчивается на построении ?.files
. Если BEMHTML собирается, значит ?.files
построился.
А какая версия enb-bemxjst
используется?
Заметил, что BEMHTML собирается по нескольким суффиксам:
[ techs.bemhtml, { sourceSuffixes: [ 'bemhtml', 'bemhtml.js' ] } ],
На файловой системе есть блоки у которых реализация и в bemhtml
и в bemhtml.js
? Из-за этого шаблоны могли продублироваться два раза.
А какая версия enb-bemxjst используется
enb-bemxjst@1.3.5
.
До 2 версии еще не обновлял так как жду релиза в npm.
Заметил, что BEMHTML собирается по нескольким суффиксам: [ techs.bemhtml, { sourceSuffixes: [ 'bemhtml', 'bemhtml.js' ] } ], На файловой системе есть блоки у которых реализация и в bemhtml и в bemhtml.js? Из-за этого шаблоны могли продублироваться два раза.
Да, такие блоки есть и они в bem-core. Я использую реализацию блока page
.
Версия bem-core@2.5.1
И такой проблемы не было как сейчас до перехода на 2 версию enb-bem-techs
@blond
Блоки которые имеют только реализацию в bemhtml.js
все равно дублируются
Есть ли возможность выложить пример, на котором можно воспроизвести проблему?
@blond Сейчас попробую.
@blond Собрал на скорую руку :) https://github.com/Hurtsok/enbBemTechProblem
@Hurtsok Спасибо! Сегодня посмотрю.
Нашёл проблему. Она в этой строчке: https://github.com/Hurtsok/enbBemTechProblem/blob/master/.bem/enb-make.js#L88.
Если mobile
равна false
, то в массив добавится путь корню проекта. И получится что уровни просканируются 2 раза, и в bemhtml код попадёт тоже два раза.
Почему раньше работало, пока не понял. Почему файлы не отфильтровались технологией files
пока тоже, возможно это баг.
Да, это ошибка — https://github.com/enb-bem/enb-bem-techs/issues/179.
PR с исправлением — https://github.com/enb-bem/enb-bem-techs/pull/180
@blond Спасибо!
@blond
Обновился, все хорошо собралось, повторяющихся блоков в bemhtml.js
нет. Но возник вопрос по уровням переопределения. Раньше в bemhtml.js
шаблоны шли в таком порядке.
bem-core\common.blocks\page\page.bemhtml
bem-core\common.blocks\page\__css\page__css.bemhtml
bem-core\common.blocks\page\__js\page__js.bemhtml
desktop.blocks\page\page.bemhtml.js
Т.е мой блок page переопределял тот что в bem-core Сейчас я получаю такую сборку:
bem-core\common.blocks\page\page.bemhtml
desktop.blocks\page\page.bemhtml.js
bem-core\common.blocks\page\__css\page__css.bemhtml
bem-core\common.blocks\page\__js\page__js.bemhtml
Т.е если я пишу представление элементов блока в общем файле, то я в такой ситуации не могу перекрыт те что расположены в bem-core в отдельных файлах. Не понимаю как быть?
@Hurtsok В идеале — разнести переопределение по отдельным файлам. Но если очень не хочется, можно написать в page.deps.js
:
({
mustDeps: { elem: ['css', 'js'] }
})
@tadatuta
Просто по логике уровни же должны же идти с верху в низ, а не в хаотическом порядке. Так было до обновления enb-bem-techs
до 2 версии. Или я чего то не понимаю?
@tadatuta В доке по миграции на 2 версию написано, что:
Файлы должны быть отсортированы сперва по уровню, и только потом по суффиксу.
@Hurtsok гарантируется порядок уровней в рамках каждой сущности:
level1/block1
level2/block1
level3/block1
level1/block2
level2/block2
Кстати, у меня до перехода на enb файлы собирались так:
level-1/block/block.vanilla.js
level-1/block/block.browser.js
level-2/block/block.vanilla.js
level-2/block/block.browser.js
А теперь собираются вот так:
level-1/block/block.vanilla.js
level-2/block/block.vanilla.js
level-1/block/block.browser.js
level-2/block/block.browser.js
Если
Файлы должны быть отсортированы сперва по уровню, и только потом по суффиксу.
Получается, в enb баг?
@apsavin всё так — https://github.com/enb-bem/enb-bem-techs/issues/156
Какую версию enb
и enb-bem-techs
используешь?
"enb": "^0.15.0", "enb-bem-techs": "^1.0.3"
Понятно, обновлюсь.
@apsavin за последнее время случилась целая куча релизов сборочных пакетов, есть смысл посмотреть на project-stub
@tadatuta Да, спасибо, я в принципе слежу за всем этим, но не всегда есть время все проекты обновлять до всего самого свежего.
Тулзу надо! ;-)
@zxqfox https://david-dm.org/ ;)
@zxqfox ага, тулзу, которая бы читала release notes и правила код проектов при необходимости после обновления зависимостей.)
Влад @vkz по такому принципу конвертилку для BEMHTML делает: собирает ломающие отличия между версиями компилятора и из старых шаблонов генерит новые, уже учитывающие все требования новых версий компилятора.
Привет! Обновил
enb-bem-techs@1.0.4
до версии2.0.0
и начались проблемы со сборкой bemhml и html. Сама сборка проходит без ошибок, но по окончании сборки я имею пустой html файл и странно собранный bemhtml. Все шаблоны в нем продублированы по 2 раза. Циклические зависимостиmustDeps
отсутствуют вdeps
файлах, т.к я использую ключstrict: true
Почему html файл пустой и почему шаблоны продублированы 2 раза?
Пример сборки бандлов: