单个 gulp 内的多个流 - 如果调用?

Multiple streams inside single gulp-if calling?

在下面的代码中,我plugins.if( !config.isDevelopmentMode && config.compileBladeTemplates, /* task */)检查了两次(plugins.ifgulp-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,
     `{{ route('') }}`
  )
))
.pipe(plugins.if(
  !config.isDevelopmentMode && config.compileBladeTemplates,
  plugins.replace(
     /<!--\s+@blade\s+(yield|include)\s*-->/g,
     ` @('')`
  )
))
// ...

如果我明白你想做什么,我认为 lazypipe 会适合你。参见 gulp-if with lazypipe

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

然后在你的任务中:

.pipe(plugins.if(
  !config.isDevelopmentMode && config.compileBladeTemplates, replaceChannel()))