Open kompolom opened 8 years ago
cc @blond
Получится через prependFiles
подмешать какую-нибудь штуку, которая сделает из this.require('i18n')
this.i18n
в tmpl-specs
?
@zxqfox Идея мне нравится. Но я понятия не имею как пробросить i18n в нужный контекст.
нашел вот такую конструкцию:
oninit(function(exports, context) {
var BEMContext = exports.BEMContext || context.BEMContext;
BEMContext.prototype.i18n = ' + I18NCode + ';
});
Делает как раз то что нужно. Вопрос как ее в файл добавить
Сохрани на диск и добавь путь в prependFiles ;-)
Если не хочется на диск, можно прямо в конфиге генерить с помощью https://github.com/enb/enb/blob/master/techs/write-file.js и потом https://github.com/enb/enb/blob/master/techs/file-merge.js
@tadatuta А как добавить технологии к сборке tmpl-specs
?
@kompolom там пока нельзя, и сложно сделать, чтобы было можно. Я понял, что это не особо часто нужно и сделал подмешивание файлов в начало и конец
@zxqfox Я так и думал... Что то не особо помогло. Файлы примешиваются ко всем движкам... (там еще bh.js) и сборка тестов падает.
if (typeof BH !== 'undefined') { код для BH }
if (typeof BEMHTML !== 'undefined') { код для BEMHTML }
?
Решение:
1) создаем файл injectI18N.js
if(typeof exports.BEMHTML !== 'undefined') {
BEMContext = exports.BEMHTML.BEMContext;
BEMContext.prototype.i18n = global.BEM.I18N;
}
2) в конфиге сетов добавляем
appendFiles : ['../../.enb/injectI18N.js'],
3) и в настройках технологии уже
options : {
requires : { i18n : { globals : 'BEM.I18N' } },
sourceSuffixes : ['bemhtml.js', 'bemhtml'],
exportName : 'BEMHTML',
devMode : true
}
Хочется чтобы tmpl-specs не падали на шаблонах с
i18n
. В обычной сборке i18n доступен изthis.i18n()
. А как сделать, чтобы также было в шаблонах? В шаблонах тоже получается доступно но черезthis.require('i18n')
. Но так не работает вenb server
. Для сборки используемenb-bemxjst-i18n
Привожу конфиг