2017-02-01 15 views
1

Привет, у меня проблема с передачей переменной от gulp до мопса, а затем к фильтру. Im передает переменную как это.Ошибка перехода 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

Теперь вы не можете, это ненадежно, это похоже на то, что мопс мог видеть будущее. Если это не понадобится, разработчики мошенников не будут помещать эту ошибку в движок. – KyleK

+0

Спасибо за помощь. Я передал это, создав две задачи с фильтрами diffrrent. Один из фильтров для php и один для html. – wrcode