javascript - 单个 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')`
)
))
// ...
解决方案
如果我了解您要做什么,我认为懒惰的管道会为您工作。参见gulp-if 和 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()))
推荐阅读
- javascript - 未捕获的 ReferenceError:未定义 href
- python - 将 JSON 转换为 CSV 文件
- reactjs - 学习者问题:如何将消息栏 (Fabric UI) 中的按钮与功能相关联?
- flutter - Flutter authstate 干扰了我的底栏(firebase)
- java - 如何制作一个 switch 语句以在 Java 中不断重复
- rxjs - RXJS 组合 x 个 observables,其中 n 个是可选的
- scala - Akka 流:为什么 Sink.head 用alsoTo 广播终止流?
- python - Sum & count of a column based on the content of the last value in each group excluding the last row
- subdomain - 如何在 freehosting.com 中添加 TXT?
- javascript - JQuery 无法连接到 Spring WebSocket