Gulp-递归删除空文件夹
我想删除给定目录中的所有文件夹和子文件夹,如果它们只包含文件夹而不包含文件。有没有一个简单的方法 到目前为止,我发现:Gulp-递归删除空文件夹,gulp,Gulp,我想删除给定目录中的所有文件夹和子文件夹,如果它们只包含文件夹而不包含文件。有没有一个简单的方法 到目前为止,我发现: 这是一个粗略的开始,所以我想您只需要循环递归 var modules = { gulp : require('gulp'), fs : require('fs'), path : require('path'), del : require('del'), map
- 这是一个粗略的开始,所以我想您只需要循环递归
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。然后,它使用map查看是否有文件添加到流中,然后更新变量(如果有)。任务完成后,如果变量尚未更新,则会删除文件夹
如上所述,您可能只需在递归目录中循环(或者您可以使用您提到的一个插件)。您可以使用:
这会递归地删除
foo/
下的所有空文件夹,从gulp 4开始,使用节点v12.15+,无需添加更多依赖项即可执行此操作
在生成新文件夹之前,我使用它来清理我的生成/输出
文件夹
cb
是对gulp的回调,您可以阅读更多关于它的信息
如果要递归删除文件夹,请设置recursive:{true}
const fs=require('fs');
功能文件夹(cb){
rmdir('build',{recursive:true},cb,);
}
exports.default=series(cleanFolder,parallel(您的并行任务));
Thx。我将首先尝试“Sven Schoenung”的解决方案,因为目前我喜欢更多的依赖项,而不是更多的代码。没问题。我有心情把它写下来。让我们知道它是否适合您!:)这里的“fs”是什么?@VivekDevfs
是node.js附带的文件系统api
gulp.task('delete-empty-directories', function() {
deleteEmpty.sync('foo/');
});