gulp-watch排除具有特定字符集的文件

时间:2017-06-01 12:36:19

标签: gulp

我有一个gulp-watch脚本,可以监视我的图像目录中的更改,然后处理图像。问题是,为网络设置的photoshop正在将临时文件放在目录中,然后非常快速地重命名它们,这会使我的图像处理脚本运行起来。我想将它们从监视脚本中排除。

临时文件的格式为moog-mftrem_tmp489245944

我想使用_tmp字符串排除,但不确定如何排除文件名中间的字符。这是我尝试过但似乎没有用的东西:

gulp.task('watch', function() {
    gulp.watch(['app/images/pedals/*.png','!app/images/pedals/*_tmp*'], ['images']);
});

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

虽然您的临时文件没有扩展名,但如果您没有指定,则glob路径不知道该怎么做。它只是一个文件夹的路径,实际上它找不到与你的glob匹配的文件夹名称。

<强>尝试:

gulp.task('watch', function() {
    gulp.watch(['app/images/pedals/*.png','!app/images/pedals/*_tmp*.*'], ['images']);
});

请注意额外的:。* (句号星号)

为了完整性,我想添加递归的globstar / ** /

<强>即

gulp.task('watch', function() {
    gulp.watch(['app/images/pedals/**/*.png','!app/images/pedals/**/*_tmp*.*'], ['images']);
});

答案 1 :(得分:-1)

考虑使用'gulp-filter':

const gulp = require('gulp');
const filter = require('gulp-filter');


gulp.task('watch', function() {
    gulp.watch('app/images/pedals/*.png', ['images']);
});

const f = filter(file => file.path.includes('tmp'));

gulp.task('images', function() {
   return gulp.src('app/images/pedals/*.png')
        .pipe(f)
        .pipe(gulp.dest('./build'))

});