Handlebars компилирует пустой шаблон без данных, выполняющихся внутри задачи Gulp
Я выполняю простую задачу gulp, которая должна отображать версию шаблона моего руля на определенном языке. Языковые данные хранятся в файле JSON, и мне требуется, чтобы динамически внутри задачи gulp pipe я сохранял ее в переменной, а затем выполнялась задача руля.
gulp.task('compilen', () => {
var strings;
return gulp.src('frontend/templates/*/*.hbs')
.pipe(through.obj(function(file,enc,cb){
var p = parsePath(file.relative);
strings = require('./frontend/templates/' + p.dirname+ '/locales/en.json');
console.log(strings);
cb(null,file);
}))
.pipe(handlebars(strings, options))
.pipe(rename(function(path){
path.basename += "-en";
path.extname = ".html";
}))
.pipe(gulp.dest('build'));
});
Всякий раз, когда я бегу gulp
все работает и выводит файл без strings
данные. {{ }} Удаляются, но фактические данные отсутствуют, как если бы строковый объект был пустым, но это не так, поскольку всякий раз, когда я оборачиваю handlebars
функции с tap и console.log значения они все там.. Что еще более странно, что вместо strings
Переменная, если я должен был передать литерал объекта, все отображается правильно.
вот пример шаблона hbs и мой файл json
main.hbs
{{> header}}
<div>
{{home.title}}
</div>
en.json
{
"home" : {
"title" : "hello world",
"heading" : "1245"
}
}
вывод main.html
<div>
</div>
<div>
</div>
1 ответ
Я решил это с помощью еще одного плагина gulp-data
ссылка в нижней части документов. Я заменил through.obj
с gulp-data
объект, и он работает сейчас. Я изо всех сил пытался делать простые вещи с глотком, поэтому мой совет держаться подальше.