Войти с помощью github
Форум /

ENB сборка ограничивает нас своими правилами в отношении нод.

Допустим, у меня есть матрица свойств для сборки, от которой будут зависить какие слои переопределения необходимо подключить к сборке. Пример матрицы:

  1. Заказчик - слои с именем заказчика имеют блоки для логики заточенной под заказчика, а так же и ряд тем
  2. Устройство - не каждое устройство должно тянуть к себе код от другого.
  3. Разрешение - не все приложения делаются резиновыми, по большей части в нашей работе приложение собирается под конкретное разрашение.
  4. Тема - это свойство очевидно многим, у нас тема определяется как набором 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] }

Не мне же одному уже приходит эта мысль? Наверняка уже кто-то задумывался об этом? Ведь , это так упрощает жизнь!