Merge branch 'dev/1.0' into custom/common
This commit is contained in:
62
scripts/clean-empty-directories.js
Normal file
62
scripts/clean-empty-directories.js
Normal file
@@ -0,0 +1,62 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
/**
|
||||
* 递归删除空目录
|
||||
* @param {string} dirPath - 要检查的目录路径
|
||||
* @param {boolean} dryRun - 是否只打印不删除
|
||||
*/
|
||||
function removeEmptyDirectories(dirPath, dryRun = false) {
|
||||
try {
|
||||
// 读取目录内容
|
||||
const files = fs.readdirSync(dirPath);
|
||||
|
||||
// 递归检查子目录
|
||||
for (const file of files) {
|
||||
const fullPath = path.join(dirPath, file);
|
||||
const stat = fs.statSync(fullPath);
|
||||
|
||||
if (stat.isDirectory()) {
|
||||
removeEmptyDirectories(fullPath, dryRun);
|
||||
}
|
||||
}
|
||||
|
||||
// 再次读取目录内容,因为子目录可能已经被删除
|
||||
const updatedFiles = fs.readdirSync(dirPath);
|
||||
|
||||
// 如果目录为空
|
||||
if (updatedFiles.length === 0) {
|
||||
console.log(`${dryRun ? 'Would remove' : 'Removing'} empty directory: ${dirPath}`);
|
||||
if (!dryRun) {
|
||||
fs.rmdirSync(dirPath);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error processing directory ${dirPath}:`, error.message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 主函数
|
||||
*/
|
||||
function main() {
|
||||
// 获取项目根目录
|
||||
const projectRoot = path.resolve(__dirname, '..');
|
||||
|
||||
console.log('Starting to remove empty directories...');
|
||||
console.log(`Project root: ${projectRoot}`);
|
||||
console.log('====================================');
|
||||
|
||||
// 执行删除操作
|
||||
removeEmptyDirectories(projectRoot);
|
||||
|
||||
console.log('====================================');
|
||||
console.log('Empty directory cleanup completed!');
|
||||
}
|
||||
|
||||
// 运行主函数
|
||||
if (require.main === module) {
|
||||
main();
|
||||
}
|
||||
|
||||
module.exports = removeEmptyDirectories;
|
||||
Reference in New Issue
Block a user