在Gulp任务中多次运行Handlebars

时间:2016-03-31 14:51:59

标签: gulp handlebars.js

我试图创建一个将两个Handlebars进程应用到src的Gulp任务。
第一个进程使用外部JSON数据源并填充模板。然后,对于一个额外的进程,我想用模板中的另一个表达式解析我的gulpfile中计算的值。 然后重命名生成的模板并输出到目标。

每个流程都独立工作,但当我尝试将它们合并为一个任务时,只运行第一个Handlebars流程。

{{1}}

我是否误解了Gulp的管道流是如何工作的?我有想法先合并两个JSON源,然后用Handlebars解析,但我不确定上述语境中的语法。

2 个答案:

答案 0 :(得分:3)

您的代码无效的原因是因为在第一个handlebars()之后您的流中不再有Handlebars模板。所有{{placeholder}}表达式都已被替换,除了HTML之外什么都没有。所以第二个handlebars()实际上不能再做任何事了。

  

我有想法先合并两个JSON源,然后用Handlebars解析

这是正确的做法。

假设您的第一个数据源是文件data.json,第二个数据源是在Gulpfile中计算的。您可以使用merge包合并两者:

var merge = require('merge');

gulp.task('default', function() {
   var dataSrc1 = require('./data.json');
   var dataSrc2 = {
      count: 40 + 2
   };

   var dataSrc = merge.recursive(true, dataSrc1, dataSrc2);

   return gulp.src('handlebars/pagetemplate.hbs')
     .pipe(handlebars(dataSrc, options))
     .pipe(rename('page.html'))
     .pipe(gulp.dest('outputfolder/'));
});

答案 1 :(得分:0)

您可能需要合并两个管道 /

page.driver.browser.manage.all_cookies

自豪地从Gulpjs - using-multiple-sources-in-one-task

复制