Можете ли вы gulp очистить все файлы в каталоге, за исключением одного файла?
Есть ли способ использовать gulp -clean, чтобы вместо передачи в файлы или каталоги, которые я хочу удалить, удалить все, что не соответствует определенному имени файла в каталоге?
Например, если у меня есть 3 файла в каталоге "dir":
dir/a.js
dir/b.js
dir/c.js
Пример Pseudocode того, что я хочу сделать (удалить все в /dir/thats not a.js:
gulp.src('!./dir/a.js').pipe(clean());
Ответы
Ответ 1
Это должно работать:
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);
Ответ 2
gulp-filter можно использовать для фильтрации файлов из потока gulp:
var gulp = require('gulp');
var filter = require('gulp-filter');
gulp.src('**/*.js')
.pipe(filter(['*', '!dir/a.js']))
.pipe(clean());