0

我正在运行一个简单的 gulp 任务,该任务应该以特定语言呈现我的车把模板版本。语言数据存储在 JSON 文件中,我需要在 gulp 管道任务中动态地将其存储在变量中,然后执行把手任务。

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 文件

主文件

{{> header}}

<div>
  {{home.title}}
</div>

en.json

{
    "home" : {
    "title" : "hello world",
    "heading" : "1245"
    }
 }

main.html 输出

<div>

</div>
<div>

</div>
4

1 回答 1

0

gulp-data我通过在文档底部使用另一个插件参考解决了这个问题。我替换through.obj了该gulp-data对象,它现在可以工作了。我一直在努力尝试用 gulp 做简单的事情,所以我的建议是远离。

于 2018-07-13T22:55:16.253 回答