Не могу разобраться, как использовать нотацию borschik:include: в js-файлах.
Есть пример. Файл a.js:
/* borschik:include:b.js */
Файл b.js:
// test b
Если исопльзую просто borschik с командной строки, то всё работает:
borschik --input=a.js --minimize=no
-- всё работает ок. В составе enb сборки инструкция не обрабатывается.
Пытался подключать js-borschik-include в .enb/make.js для обработки отдельных исходных файлов, но либо не разобрался с особенностями конфигурации (обычная история), либо какие-то ещё дрова попались.
Включаю технологию:
var
// ...
techs = {
// ...
borschikInclude: require('enb-borschik/techs/js-borschik-include'),
browserJs: require('enb-js/techs/browser-js'),
// ...
},
// ...
;
module.exports = function (config) {
// ...
config.nodes('pages/*', function(node) {
node.addTechs([
// ...
[techs.borschikInclude, {
sourceSuffixes : ['js'],
target: '?.pre.js',
}],
[techs.browserJs, {
sourceSuffixes: ['vanilla.js', 'js', 'browser.js'],
sourcemap: true,
includeYM: true,
}],
// ...
]);
});
Что делаю не так?
Если правильно понимаю, мне надо заставить borschikInclude обрабатывать каждый js-файл (или файлы с определённым расширением) перед передачей в browserJs? Как?
Смотрел на:
В
project-stubдля js-бандловborschikподключен из коробки: https://github.com/bem/project-stub/blob/master/.enb/make.js#L108Чтобы инклюд работал из JS-кода блока, оформлено должно быть так: Пусть у нас есть следующая структура на файловой системе.
По зависимостям код из
common.blocks/b1/b1.jsпопадет вdesktop.bundles/index/index.js. И борщик будет запущен именно наdesktop.bundles/index/index.js, так что путь от него доb.jsбудет выглядеть так:../../common.blocks/b1/b.js.Соответственно, если мы хотим заинклюдить файл
b.jsизb1.js, необходимо вb1.jsнаписать вот такой инклюд:@tadatuta Понятно, да. Работает.
Немножко не удобно -- было бы логично инклюдить относительно расположения файла исходного блока. Идея запускать препроцессор до (или внутри?) enb-js/techs/browser-js или enb-bemxjst/techs/bemhtml -- это утопия, да?
Почему утопия-то? Нужно просто запилить технологию по аналогии с https://github.com/enb/enb-borschik/blob/master/techs/borschik.js, но для работы с каждым исходным файлом вместо бандла. В качестве примера можно смотреть на https://github.com/enb/enb-borschik/blob/master/techs/js-borschik-include.js#L53
Как выясняется, помимо прочего, оно ещё и sourcemap ломает. В общем, видимо, к сожалению, не вариант для рабочих проектов. Увы.
Да, вечность назад была попытка запилить поддержку сорсмапов в борщике, но ее так и не довели до конца :(