我想知道是否有一种简单的方法来检测两个任务是否写入同一个文件。
在此示例中,/js
目录旁边有一个/ts
目录。 /ts
将被转换为与/js
相同的目录。不应该有任何碰撞。问的是,如果发生碰撞,ts
将获胜;但是,我想警告说发生了碰撞。
gulp.task('js', function() {
return es.concat(
gulp.src(config.src.path('js', '**', '*.js'))
.pipe(gulp.dest(config.build.path(app, 'js')))
//, ....
);
});
gulp.task('ts', ['js'], function() {
var tsResult = gulp.src(config.src.path('ts', '**', '*.ts'))
.pipe(ts({
declaration: true,
noExternalResolve: true
}));
return es.concat([
tsResult.dts.pipe(gulp.dest(
config.build.path(app, 'definitions'))),
tsResult.js.pipe(gulp.dest(
config.build.path(app, 'js'))) // <--- same dest as js task
]);
})
我可以检测到ts
任务是否覆盖了js
任务刚刚到位的文件吗?
答案 0 :(得分:1)
只是一个想法。你可以pass a callback到gulp.dest
这样:
gulp.src('lib/*.js')
.pipe(uglify())
.pipe(gulp.src('styles/*.css'))
.pipe(gulp.dest(function(file) {
if (fs.existsSync('something here')) { // it's a deprecated call, use a newer one
console.warn("File exists", file);
}
// I don't know, you can do something cool here
return 'build/whatever';
}));
自Gulp 3.8以来可以使用该功能:https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#380
其他资源: