у нас есть несколько разделов сайта. Админка, профиль, публичная часть. Сейчас собирается 3 merged бандла. При этом на публичной части много разных страниц. Хотелось бы иметь что то вроде core.js, core.css куда попадут стили и скрипты общие для всех страниц публичной части, и маленькие js и css для каждой отдельной страницы, где будут уникальные стили-скрипты для нее. Как это сделать?
Для себя это реализовывал постобработкой в gulp -- когда всё, полученное после enb, разбирается на кусочки и собирается обратно по пакетам (в соответствии с установленными правилами): в общий пакет или собственные для каждой странички. В общем, делается это не только для стилей, а для скриптов и шаблонов тоже. Но саме заморочное, пожалуй, -- это находить объединения в стилях (если там использовалось
@extend
или ещё какая магия) -- до сих пор осталась кривая реализация, которая рано или поздно ногу отстрелит.Тоже было бы интересно знать, существует ли более приличный способ.
В своё время так ничего и не нашёл.
Хотелось бы на enb реализовать
@kompolom для этого следует использовать:
@kompolom Если задача решилась, можно попросить продемонстрировать фрагмент
make.js
и/или минимальный кейс по использованию? Сейчас попытался всё же перейти на этот метод, но пока даже пример из mergeDeps не взлетает.UP (ко всем, к @tadatuta в частности) описание задачи:
Имеется почти стандартная конфигурация:
Блоки в папке
blocks/*
, странички в папках видаpages/<ID>/<ID>.bemjson
.Для всех страниц хочется генерить по одному общему файлу на каждую технологию, напр.:
-- включающие, напр., блоки
A
,B
иC
(соотв., изblocks/A/*
,blocks/B/*
иblocks/C/*
).Все остальные блоки должны попадать в соотв. файлы, относящиеся к каждой из страничек:
Как именно я должен перенастроить enb? Реальная ли задача вообще?
@lilliputten Я не думаю что получится подключить к странице несколько bemhtml.js файлов тк. собранный bemhtml.js содержит не только шаблоны но и bem-xjst, bemhtml внутрь которых завернуты шаблоны. По крайней мере так с bem-xjst 6.х. Мне это это категорически не нравится. Было бы здорово иметь модуль ядром bemhtml и в рантайме насыпать ему шаблонов.
@kompolom на самом деле это можно делать с
2.x
, кажется:потом в ноде:
Аналогично метод
compile
можно вызывать в браузере.Собственно в документации именно этот способ и описан: https://ru.bem.info/platform/bem-xjst/api/
@lilliputten так настроить ENB безусловно можно. Направление мысли такое:
common.bemdecl.js
на основе которого можно собрать все остальные общие файлы по стандартной схеме.@kompolom BEMHTML у меня подключается отдельно в виде
YM-модуляблока с js-кодом (до загрузки шаблонов), а из bemhtml-шаблонов выкидывается, там остаётся толькоBEMHTML.compile(function() { ... })
. Т.е., с этим всё в порядке (если не считать того, что опять слегка велосипед).А вот со сложением-вычитанием придётся повозиться. Пока опять на время сдаюсь. Возвращаюсь к старому методу -- до следующего захода.
Если есть возможность, прошу поделиться рабочим кейсом.
@lilliputten У вас BEMHTML в глобальной олбасти видимости? И как собираете, написали кастомную технолонию для enb?
@tadatuta
~Получается не бандл с ядром, а заглушка. А нужно собрать настоящий bemhtml и bemtree без шаблонов~
UPD: Был не прав. В проекте оказалось старое ядро
@tadatuta
Подскажите, как например получить? Может технология есть для enb?
https://github.com/enb/enb-bem-techs/blob/master/exlib/deps-old.js#L292
еще можно попробовать https://github.com/bem-sdk/bem-decl/blob/master/lib/intersect.js