フォルダとファイルのみが含まれている場合は、特定のディレクトリ内のすべてのフォルダとサブフォルダを削除します。それを行う簡単な方法はありますか?Gulp - 空のフォルダを再帰的に削除
私は今まで見つかった:
- https://www.npmjs.com/package/gulp-recursive-folder
- https://www.npmjs.com/package/gulp-count
- https://www.npmjs.com/package/gulp-path
フォルダとファイルのみが含まれている場合は、特定のディレクトリ内のすべてのフォルダとサブフォルダを削除します。それを行う簡単な方法はありますか?Gulp - 空のフォルダを再帰的に削除
私は今まで見つかった:
あなたはdelete-empty
を使用することができます。
gulp.task('delete-empty-directories', function() {
deleteEmpty.sync('foo/');
});
これは再帰的にfoo/
以下のすべての空のフォルダが削除されます。
ことはここでは大まかなスタートだので、あなたはちょうど私が推測する再帰をループする必要があります。
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/でディレクトリを設定され、その後、これらのディレクトリの下にSRCを実行します。次に、マップを使用してストリームにファイルが追加されているかどうかを確認し、変数があれば更新します。タスクが終了し、変数が更新されていない場合は、フォルダーが削除されます。
前述のように、おそらく再帰のためのディレクトリをループするだけです(または、あなたが言及したプラグインの1つを使用することもできます)。
Thx。最初は「Sven Schoenung」のソリューションを試してみます。なぜなら、私は今より多くのコードより多くの依存関係を好むからです。 – Sailcomp
問題ありません。私はそれを書く気分だった。それがあなたのために働くかどうか私達にお知らせください! :) – JSess