你可以把一个目录以外的所有文件清除干净吗?

有没有办法使用gulp-clean,而不是传入我想要删除的文件或目录,删除与目录中特定文件名不匹配的所有内容?

例如,如果我在目录“dir”中有3个文件:

dir/a.js dir/b.js dir/c.js 

示例我想要做的伪代码,(删除/ dir / thats不是a.js中的所有内容:

 gulp.src('!./dir/a.js').pipe(clean()); 

这应该工作:

 var gulp = require('gulp'); var del = require('del'); gulp.task('clean', function(cb) { del(['dir/**/*', '!dir/a.js'], cb); }); 

如果排除的文件位于子目录中,则需要从删除中排除该目录。 例如:

del(['dir/**/*', '!dir/subdir', '!dir/subdir/a.js'], cb);

要么:

del(['dir/**/*', '!dir/subdir{,/a.js}'], cb);

gulp-filter可用于过滤来自gulpstream的文件:

 var gulp = require('gulp'); var filter = require('gulp-filter'); gulp.src('**/*.js') .pipe(filter(['*', '!dir/a.js'])) .pipe(clean());