diff --git a/lib/index.js b/lib/index.js index 3f10ded..59429fa 100644 --- a/lib/index.js +++ b/lib/index.js @@ -10,6 +10,11 @@ const adm_zip_1 = __importDefault(require("adm-zip")); const DISALLOWED_EXTENSIONS = new Set([ ".exe", ".o", + ".obj", + ".ilk", + ".pdb", + ".idb", + ".recipe", ".class", ".bin", ".dll", @@ -22,16 +27,27 @@ const DISALLOWED_KEYWORDS = new Set(["a.out", "main", "temp"]); const DISALLOWED_DIRECTORIES = new Set([ ".vs", ".idea", + ".tlog", "__pycache__", "node_modules", + "pthreads.2", + "pthreadVC2", ".git", "x64", "x86", + "Debug", + "Release", + "build", + "dist", + "bin", + "obj", + "output", "__MACOSX", ".vscode", ]); let deletedFiles = []; // 存储删除的文件信息 let deletedDirectories = []; // 存储删除的文件夹信息 +let deletedEmptyDirectories = []; // 存储删除的空文件夹 // 清理文件名 const sanitizeFileName = (fileName) => { const decodedName = fileName.toString("utf8"); @@ -163,8 +179,29 @@ const processDirectory = (inputDirectory, outputDirectory) => { console.log(`[KEEP] 保留文件: ${itemPath} 并复制到 ${outputFilePath}`); } } + // 删除空目录 + deleteEmptyDirectories(inputDirectory); }); }; +// 删除空目录 +const deleteEmptyDirectories = (dir) => { + // 如果文件夹不存在直接跳过 + if (!fs_1.default.existsSync(dir)) { + return; + } + const files = fs_1.default.readdirSync(dir); + if (files.length === 0) { + fs_1.default.rmSync(dir, { recursive: true, force: true }); + console.log(`[DELETE] 删除空目录: ${dir}`); + deletedEmptyDirectories.push({ + type: "文件夹", + name: path_1.default.basename(dir), + originalPath: dir, + }); + const parentDir = path_1.default.dirname(dir); + deleteEmptyDirectories(parentDir); // 递归检查父目录 + } +}; // 输出删除信息到控制台 const printDeletedItems = () => { let result = "\n[INFO] 删除的文件和文件夹:"; @@ -182,12 +219,21 @@ const printDeletedItems = () => { result += `\n${item.type} ${item.name} ${item.originalPath}`; }); } + // 输出空文件夹 + if (deletedEmptyDirectories.length > 0) { + result += "\n[INFO] 被删除的空文件夹:"; + deletedEmptyDirectories.forEach((item) => { + result += `\n${item.type} ${item.name} ${item.originalPath}`; + }); + } return result; }; // 写入日志到文件 const writeLogToFile = (log) => { const logFilePath = path_1.default.join(process.cwd(), "out/result.log"); fs_1.default.writeFileSync(logFilePath, log, { encoding: "utf8", flag: "w" }); + // 一共删除了多少 + console.log(`[INFO] 共删除了 ${deletedFiles.length} 个文件,${deletedDirectories.length} 个文件夹,${deletedEmptyDirectories.length} 个空文件夹。`); console.log(`[INFO] 统计信息已保存到 result.log 文件中。`); }; // 主函数 diff --git a/lib/index.js.map b/lib/index.js.map index 0696066..b69e50d 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index d77c18a..134f270 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,11 @@ import AdmZip from "adm-zip"; const DISALLOWED_EXTENSIONS = new Set([ ".exe", ".o", + ".obj", + ".ilk", + ".pdb", + ".idb", + ".recipe", ".class", ".bin", ".dll", @@ -18,11 +23,21 @@ const DISALLOWED_KEYWORDS = new Set(["a.out", "main", "temp"]); const DISALLOWED_DIRECTORIES = new Set([ ".vs", ".idea", + ".tlog", "__pycache__", "node_modules", + "pthreads.2", + "pthreadVC2", ".git", "x64", "x86", + "Debug", + "Release", + "build", + "dist", + "bin", + "obj", + "output", "__MACOSX", ".vscode", ]); @@ -37,6 +52,11 @@ let deletedDirectories: { name: string; originalPath: string; }[] = []; // 存储删除的文件夹信息 +let deletedEmptyDirectories: { + type: string; + name: string; + originalPath: string; +}[] = []; // 存储删除的空文件夹 // 清理文件名 const sanitizeFileName = (fileName: Buffer): string => { @@ -192,9 +212,32 @@ const processDirectory = ( ); } } + + // 删除空目录 + deleteEmptyDirectories(inputDirectory); }); }; +// 删除空目录 +const deleteEmptyDirectories = (dir: string) => { + // 如果文件夹不存在直接跳过 + if (!fs.existsSync(dir)) { + return; + } + const files = fs.readdirSync(dir); + if (files.length === 0) { + fs.rmSync(dir, { recursive: true, force: true }); + console.log(`[DELETE] 删除空目录: ${dir}`); + deletedEmptyDirectories.push({ + type: "文件夹", + name: path.basename(dir), + originalPath: dir, + }); + const parentDir = path.dirname(dir); + deleteEmptyDirectories(parentDir); // 递归检查父目录 + } +}; + // 输出删除信息到控制台 const printDeletedItems = () => { let result = "\n[INFO] 删除的文件和文件夹:"; @@ -212,6 +255,13 @@ const printDeletedItems = () => { result += `\n${item.type} ${item.name} ${item.originalPath}`; }); } + // 输出空文件夹 + if (deletedEmptyDirectories.length > 0) { + result += "\n[INFO] 被删除的空文件夹:"; + deletedEmptyDirectories.forEach((item) => { + result += `\n${item.type} ${item.name} ${item.originalPath}`; + }); + } return result; }; @@ -219,6 +269,8 @@ const printDeletedItems = () => { const writeLogToFile = (log: string) => { const logFilePath = path.join(process.cwd(), "out/result.log"); fs.writeFileSync(logFilePath, log, { encoding: "utf8", flag: "w" }); + // 一共删除了多少 + console.log(`[INFO] 共删除了 ${deletedFiles.length } 个文件,${deletedDirectories.length} 个文件夹,${deletedEmptyDirectories.length} 个空文件夹。`); console.log(`[INFO] 统计信息已保存到 result.log 文件中。`); };