Несколько потоков внутри одного вызова gulp-if?

В приведенном ниже коде я делаю plugins.if( !config.isDevelopmentMode && config.compileBladeTemplates, /* task */) проверьте дважды (plugins.if является пакетом gulp-if). Могу ли я провести рефакторинг кода ниже с помощью одной проверки? Не уверен, что это возможно только с gulp-if, поэтому разрешено использовать дополнительные плагины.

const   gulp = require('gulp'),
        plugins = require('gulp-load-plugins')();

// ...
.pipe(plugins.if(
  !config.isDevelopmentMode && config.compileBladeTemplates,
  plugins.replace(
     /<!--\s+@blade\s+namedRoute\(\s*(.+?)\s*\)\s*-->\s*(?:\r\n|\r|\n)?\s*(<.+href=")(?:.+?)(".*\/?>)/g,
     `$2{{ route('$1') }}$3`
  )
))
.pipe(plugins.if(
  !config.isDevelopmentMode && config.compileBladeTemplates,
  plugins.replace(
     /<!--\s+@blade\s+(yield|include)\s*-->/g,
     ` @$1('$2')`
  )
))
// ...

1 ответ

Если я понимаю, что вы пытаетесь сделать, я думаю, что для вас подойдет lazypipe. Смотри глотай-если с лентяйкой.

var replaceChannel = lazypipe()
      plugins.replace(
     /<!--\s+@blade\s+namedRoute\(\s*(.+?)\s*\)\s*-->\s*(?:\r\n|\r|\n)?\s*(<.+href=")(?:.+?)(".*\/?>)/g,
     `$2{{ route('$1') }}$3`
    )
    plugins.replace(
     /<!--\s+@blade\s+(yield|include)\s*-->/g,
     ` @$1('$2')`
   );

и тогда в вашей задаче:

.pipe(plugins.if(
  !config.isDevelopmentMode && config.compileBladeTemplates, replaceChannel()))
Другие вопросы по тегам