1

您好,我在将变量从 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.
4

1 回答 1

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找到等效的功能。

于 2017-02-02T16:08:13.850 回答