Gulp:基于管道输出的条件执行?

Gulp:基于管道输出的条件执行?,gulp,gulp-watch,node-streams,Gulp,Gulp Watch,Node Streams,我想构建一个gulp任务,当且仅当src目录中的一个或多个文件比目标目录中的任何文件都新时,exec作为一个外部构建工具(mvn)只构建一次。(在我的例子中,对照目标目录中一个特定文件的日期进行检查就可以了。) 我曾尝试将gulp-newer和gulp-exec这两个插件组合在一起,这两个插件似乎接近我想要的插件,但当我像这样使用它们时,它会多次运行外部命令(每个源文件一次): var gulp=require('gulp'); var newer=需要('gulp-newer'); var

我想构建一个gulp任务,当且仅当src目录中的一个或多个文件比目标目录中的任何文件都新时,exec作为一个外部构建工具(mvn)只构建一次。(在我的例子中,对照目标目录中一个特定文件的日期进行检查就可以了。)

我曾尝试将gulp-newergulp-exec这两个插件组合在一起,这两个插件似乎接近我想要的插件,但当我像这样使用它们时,它会多次运行外部命令(每个源文件一次):

var gulp=require('gulp');
var newer=需要('gulp-newer');
var exec=require('gulp-exec');
变量路径={
src:[“pom.xml”、“src/****”、“resources/****”、“test/****”],
目标:“target/antlr4-typescript-4.6-SNAPSHOT-complete.jar”
}
gulp.task('maven',function(){
return gulp.src(path.src)
.pipe(较新的(path.target))
.pipe(exec('echo mvn install-Dmaven.test.skip=true'))
.pipe(exec.reporter())
;

})
考虑一下,这似乎需要一个简单的对象流过滤器,我已经编写并命名了它。下面是它的应用程序的外观:

var gulp=require('gulp');
var newer=需要('gulp-newer');
var first=需要('gulp-first');
var exec=require('gulp-exec');
变量路径={
src:[“pom.xml”、“src/****”、“resources/****”、“test/****”],
目标:“target/antlr4-typescript-4.6-SNAPSHOT-complete.jar”
}
吞咽任务('maven',函数(){
返回gulp.src(path.src,{read:false})
.pipe(较新的(path.target))
.pipe(第一个())
.pipe(exec('mvn安装-Dmaven.test.skip=true'))
.pipe(exec.reporter())
;
})