帕格JS变量传递

时间:2017-02-01 19:01:55

标签: javascript gulp pug pugjs

您好我将变量从gulp传递到pug然后传递给过滤器。我这样传递变量。

gulp.task('pug-wp', function () {
return gulp.src('src/templates/*.pug')
.pipe(pug({
        pretty: true,
        filters: {
            php: pugPHPFilter
        },
        data: { 
           development: 'php'
        }
    }))
 .pipe(rename({
    extname: ".php"
  }))
  .pipe(gulp.dest(outputPath))
  .pipe(browserSync.stream());

然后我想在

中使用它
:php(type=development)

我的错误是

msg: "development" is not constant. All filters are rendered compile-time so                                      filter options must be constants.

1 个答案:

答案 0 :(得分:0)

实际上过滤器是编译的,因此表达式在过滤器属性中不可用,这不是像标签元素那样的属性,这一切都是静态的,但你可以使用这个技巧:

case development
  when 'php'
    :php(type='php')
  when 'foo'
    :php(type='foo')
  when 'bar'
    :php(type='bar')

或者,如果developement变量仅取决于环境,则只需动态传递过滤器:

switch (developement) {
  case 'php':
    pugPHPFilter.setSomeDefaultOption({ type: 'php' });
    break;
  case 'foo':
    pugPHPFilter.setSomeDefaultOption({ type: 'foo' });
    break;
}
.pipe(pug({
    pretty: true,
    filters: {
        php: pugPHPFilter
    }
}))

setSomeDefaultOption是一个示例,请参考pugPHPFilter找到等效函数。