当且仅当src目录中的一个或多个文件比目标目录中的任何文件都新时,我想构建一个 gulp 任务,它只执行一次外部构建工具 (mvn )。(在我的情况下,检查目标目录中一个特定文件的日期就可以了。)
我尝试将gulp-newer和gulp-exec之类的插件组合在一起,这似乎与我想要的很接近,但是当我像这样使用它们时,它运行外部命令的次数太多(每个源文件一次):
var gulp = require('gulp');
var newer = require('gulp-newer');
var exec = require('gulp-exec');
var paths = {
src: ["pom.xml", "src/**/*", "resources/**/*", "test/**/*"],
target: "target/antlr4-typescript-4.6-SNAPSHOT-complete.jar"
}
gulp.task('maven', function() {
return gulp.src( paths.src)
.pipe(newer( paths.target ))
.pipe(exec('echo mvn install -Dmaven.test.skip=true'))
.pipe(exec.reporter())
;
})
我理解它为什么会这样工作,但我如何弥合多个源文件之间的差距并只调用一次外部工具?
上的文档gulp-exec
说:
注意:如果你只是想运行一个命令,只运行命令,不要使用这个插件。
...但是如果从我的管道生成任何输出,我不知道如何使用 child_process.exec gulp.src | newer
。