Условные выражения в глотке

Я немного смущен тем, как лучше всего настроить условные выражения в файле gulp, и мне не помешало бы некоторое пояснение.

Я прав в том, что вы не можете делать обычные операторы if внутри цепочки каналов? Если можно, как бы вы это напечатали?

Прямо сейчас я использую gulp-if, чтобы сделать что-то вроде этого:

// Minify
.pipe( gulpif(env === 'production',
    minifyCSS({keepSpecialComments:0,})
))

// Rename
.pipe( gulpif(env === 'production',
    rename({suffix: '.min'})
))

Но эти два блока оптимально должны находиться внутри одного и того же условия if. Это возможно? Я не могу заставить это работать.


person Johan Dahl    schedule 29.07.2015    source источник


Ответы (2)


Вы можете использовать lazypipe для преобразований minify и rename. Это будет что-то вроде этого:

var minifyAndRenameCSS = lazypipe()
  .pipe(minifyCSS({keepSpecialComments:0})
  .pipe(rename({suffix: '.min'}));

gulp.task('build', function() {
  return gulp.src('*.css')
    .pipe(gulpif(env === 'production', minifyAndRenameCSS()))
});
person Eloy Pineda    schedule 29.07.2015

На основе https://www.npmjs.com/package/lazypipe

minifyAndRenameCSS должно быть:

var minifyAndRenameCSS = lazypipe()
  .pipe(minifyCSS, {keepSpecialComments: 0})
  .pipe(rename, {suffix: '.min'});

Внутри каналов не должно быть никаких вызовов функций. Если функции нужны аргументы, разделите их запятыми (например, .pipe(myFunc, arg1, arg2)).

Может быть, у вас уже есть правильный ответ, я просто делюсь им, чтобы другие зрители знали.

person CRIS    schedule 28.01.2016