2016-04-22 4 views
0

Я хочу удалить все папки и подпапки внутри данного каталога, если они содержат только папки и файлы. Есть ли простой способ сделать это?Gulp - Удалить пустые папки рекурсивно

То, что я не нашел до сих пор:

ответ

4

Вы можете использовать delete-empty:

gulp.task('delete-empty-directories', function() { 
    deleteEmpty.sync('foo/'); 
}); 

Это рекурсивно удаляет все пустые папки ниже foo/.

0

Вот грубый старт, так что вам просто нужно цикл рекурсии, я думаю.

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/, получая папки в корне этого каталога, каталог работает ЦСИ под этими каталогами. Затем он использует карту, чтобы увидеть, есть ли файл, добавленный в поток, а затем обновляет переменную, если это так. После завершения задачи и если переменная не обновлена, она удалит папку.

Как указано выше, вы могли бы, вероятно, просто пройти через каталоги для рекурсии (или вы могли бы использовать один из упомянутых вами плагинов).

+0

Thx. Сначала я попробую решение «Sven Schoenung», потому что на данный момент я предпочитаю больше зависимостей, чем больше кода. – Sailcomp

+0

без проблем. Я был в настроении написать это. Сообщите нам, если это сработает для вас! :) – JSess