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 объект, и он работает сейчас. Я изо всех сил пытался делать простые вещи с глотком, поэтому мой совет держаться подальше.

Другие вопросы по тегам