Вот грубый старт, так что вам просто нужно цикл рекурсии, я думаю.
var modules = {
gulp : require('gulp'),
fs : require('fs'),
path : require('path'),
del : require('del'),
map : require('map-stream')
};
modules.gulp.task('folder-delete', function() {
// get folder list inside of the dir passed in
function getFolders(dir) {
return modules.fs.readdirSync(dir)
.filter(function(file) {
return modules.fs.statSync(modules.path.join(dir, file)).isDirectory();
});
}
var dir = '../src/', // (update with your path to the root folder)
folders = getFolders(dir),
hasFile = 0;
var folderMap = folders.map(function(folder) {
hasFile = 0; // reset for each folder
return modules.gulp.src(dir + folder + '/**/*')
.pipe(modules.map(function(file, cb) {
hasFile = 1;
cb(null, file);
}))
.on('end', function() {
console.log(hasFile, ' - ', folder);
if (!hasFile) {
modules.del([dir + folder], { force: true }).then(function() {
console.log('Deleted ' + dir + folder);
});
}
})
});
return folderMap;
});
В основном, это установка каталог на ../src/, получая папки в корне этого каталога, каталог работает ЦСИ под этими каталогами. Затем он использует карту, чтобы увидеть, есть ли файл, добавленный в поток, а затем обновляет переменную, если это так. После завершения задачи и если переменная не обновлена, она удалит папку.
Как указано выше, вы могли бы, вероятно, просто пройти через каталоги для рекурсии (или вы могли бы использовать один из упомянутых вами плагинов).
Thx. Сначала я попробую решение «Sven Schoenung», потому что на данный момент я предпочитаю больше зависимостей, чем больше кода. – Sailcomp
без проблем. Я был в настроении написать это. Сообщите нам, если это сработает для вас! :) – JSess