您好我将变量从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.
答案 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
找到等效函数。