Pug JS 变量传递

Pug JS variable passing

你好,我在将变量从 gulp 传递给哈巴狗然后再传递给过滤器时遇到了问题。我这样传递变量。

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.

事实上,过滤器是经过编译的,所以表达式在过滤器属性中不可用,这不是标签元素的属性,这都是静态的,但你可以使用这个技巧:

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 以找到等效函数。