Не могу разобраться, как использовать нотацию 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 ломает. В общем, видимо, к сожалению, не вариант для рабочих проектов. Увы.
Да, вечность назад была попытка запилить поддержку сорсмапов в борщике, но ее так и не довели до конца :(