Стоит задача - обернуть вендорный js в ymodules.
При этом, это должно быть технологией. Т.к. вендорный JS используется не только для самого приложения, но и в тестах. В общем применение банальной нотации борщика в исходнике не подходит - нужен промежуточное состояние.
Нужно из ?.vendor.js
превратить в ?.js
.
Внутри ?.vendor.js
Будет что-то типа такого:
(function(name, ctx, define) {
var module = define.call(ctx, ctx);
typeof modules === 'object'?
modules.define(name, function(provide) { provide(module); }) :
(ctx[name] = module);
}('backbone', this, function(global) {
/*vendorof:../../../libs/backbone/backbone.js*/;
return global.Backbone;
}));
modules.define('backbone', function (provide, Backbone) {
'use strict';
Backbone.prototype.someMethod = replaceMethod;
provide(Backbone.noConflict());
});
Все текущие примеры собирают код в конечный продукт. Мне же нужен промежуточный ?.js
который будет содержать в себе код вендора.
А уже потом собираться с остальным js.
Можно сделать обработку борщиком на промежуточном этапе до конкатенации с другими js.
Подумал подумал, решил, что есть еще один способ.
Папку с данными блоками сделать бандлами и натравив стандартную сборку с борщиком.
А после уже результат забирать при билде другого бандла.
Где ошибка?
Запятая после
[provide, {target: '?.bemdecl.js'}]
Одно понять не могу, почему невозможно использовать
enb-borschik
безenb-js
технологии.В общем, борщик работает совсем под другим API, и по этому его сложно заставить хорошо работать под ENB. Написал свою технологию для подмены
include
.cc @blond на всякий случай
@pavelpower если у тебя все получилось и ты доволен, то ура :)
Если же осталось желание упростить схему, то распиши подробнее, что у тебя на входе на файловой системе и что ожидается на выходе. Я пока не понимаю, почему тесты влияют на сборку в данном случае.
Не очень понял как связаны
enb-borschik
иenb-js
?Как API влияет на использование в ENB?
@pavelpower почему технология
js-borschik-include
не подошла?@tadatuta - попробую рассказать на пальцах
Впиливал я unit-Тестирование на основе enb-bem-spec - пришлось его переписать, т.к. не подходит под наш way с шаблонизтором BH и Less. А времени на задачу мало.
Вендорные библиотеки сначала собирали отдельно в файл
?.lib.js
, но как оказалось для unit-тестирования не нужны все либы, и хорошо бы их матчить на отдельные блоки, да и к тому-же нужно собирать их заранее, так же по отдельным фалам.Самое очевидное что пришло в голову это модификация из
?.vendor.js
в обычный?.js
прям в блоке вендора.Т.е. создаем
?.vendor.js
там прописываем:common-vendors.blocks/modules/modules.vendor.js
common-vendors.blocks/some-lib/some-lib.vendor.js
А дальше добавляем в ноды сборки на этот уровень переопредления:
И ожидаем чуда.
Не прошло. Оказывается борщик сделан совсем не так, и даже не знаю можно ли его сделать на подобии той же схемы модификации как технологии js, styl и прочие.
В общем написал свой велосипед:
.enb/tech/vendor.js
Ну и вместо инклюда борщика свой упрощенный
/*vendorof:../../../node_modules/modules/modules.js*/
И теперь схема сборки вендерных либ в общую схему с y-modules у нас работает. Что позволило сократить сложность сбокри до одной команды
enb make
Где-то на форуме встречал пост от @varya и если я верно понял, то было похожее желание делать нечто подобное.
@blond может подскажешь как с помощью борщика решить такую задачку?
Но как не курил борщик не ест файлы самостоятельно почему-то из уровня переопределения раскиданные по блокам.
Да и весь
enb-borschik
сведен к вызовуborschik.api
с прокидыванием в нее опций.Может я не верно курил борщик?