ENB сборка ограничивает нас своими правилами в отношении нод.
Допустим, у меня есть матрица свойств для сборки, от которой будут зависить какие слои переопределения необходимо подключить к сборке. Пример матрицы:
- Заказчик - слои с именем заказчика имеют блоки для логики заточенной под заказчика, а так же и ряд тем
- Устройство - не каждое устройство должно тянуть к себе код от другого.
- Разрешение - не все приложения делаются резиновыми, по большей части в нашей работе приложение собирается под конкретное разрашение.
- Тема - это свойство очевидно многим, у нас тема определяется как набором css так и возможными изменениями поведения в js
Теперь рассмотрим ситуацию.
Как нужно сформировать бандл, чтобы учесть все эти параметры?
enb make -m dev ./bundles/client/samsung/1280x720/orange
- учли все.
должны получить структуру:
bundles/client/
bundles/client/samsung
bundles/client/samsung/1280x720/
bundles/client/samsung/1280x720/orange
bundles/client/samsung/1280x720/orange/orange.css
bundles/client/samsung/1280x720/orange/orange.js
bundles/client/samsung/1280x720/1280x720.css
bundles/client/samsung/1280x720/1280x720.js
bundles/client/samsung/samsung.css
bundles/client/samsung/samsung.js
bundles/client/samsung/samsung.html
bundles/client/client.html
Но посмотрите на структуру вариаций!
И сколько мне нужно задать bemdecl.js файлов?
Когда очевидно было бы получить все зависимости только из одного.
Ах было бы прекрасно, коли была бы возможность сделать так:
enb make -m dev ./bundles/client/samsung?resolution=1280x720&theme=orange&some=1&some=2
Тогда появляется настройка сборки в очень тонких материях, и rколичество ветвлений сократилось бы на много!
bundles/client/
bundles/client/samsung
bundles/client/samsung/samsung-1280x720-orange.css
bundles/client/samsung/samsung-1280x720-orange.js
bundles/client/samsung/samsung.css
bundles/client/samsung/samsung.js
bundles/client/samsung/samsung.html
bundles/client/client.html
Конечно, в сборке ноды можно получить и параметры:
config.nodes('bundles/**/**', function (nodeConfig) {
console.log(nodeConfig.query);
});
/// { 'resolution': '1280x720', 'theme': 'orange', some: [1,2] }
Не мне же одному уже приходит эта мысль? Наверняка уже кто-то задумывался об этом? Ведь , это так упрощает жизнь!
Используй переменные окружения.
@tadatuta они помогут, но не с
enb server
!@tadatuta в принципе задача решается путем задания конкретных таргетов, как
Но, опять же, если
enb make
тут возможен, то для сборки конкретной технологии с параметрами через query строку дляenb server
как-то не выходит.Возьми express, подключи к нему ENB-мидлварь и напиши любой роутинг, какой тебе нравится.