2017-02-01 43 views
1

こんにちは、変数をgulpからpugに渡してからフィルタに渡すのに問題があります。私はこのような変数を渡します。Pug JS変数渡し

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

が実際にフィルタがコンパイルされるので、式はフィルタ属性では利用できません、というエラーを持っていますこれはタグ要素のような属性ではありませんが、このすべての静的ですが、このトリックを使用することができます:

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を参照してくださいです。

+0

変数を厳密にフィルタに渡す方法はありますか? – wrcode

+0

今、あなたは信頼できません、それはpugが未来を見ることができるようなものです。それが必要ない場合、開発者はエンジンにこのエラーを入れません。 – KyleK

+0

助けてくれてありがとうございました。これは、異なるフィルタを使って2つのタスクを作成することで渡されました。フィルタの1つは、php用で、もう1つはhtml用です。 – wrcode