你好,我在把变量从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.发布于 2017-02-03 00:08:14
事实上,过滤器是编译的,所以表达式在过滤器属性中不可用,这不是标签元素那样的属性,这都是静态的,但你可以使用这个技巧:
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找到等价的函数。
https://stackoverflow.com/questions/41987584
复制相似问题