/** * 清理 Vue 文件中的 console.log 调试语句 * 保留 console.error 和 console.warn */ const fs = require('fs'); const path = require('path'); // 需要清理的目录 const targetDirs = [ 'src/views', 'src/components' ]; // 统计信息 let totalFiles = 0; let cleanedFiles = 0; let totalLogsRemoved = 0; /** * 递归遍历目录 */ function walkDir(dir, callback) { const files = fs.readdirSync(dir); files.forEach(file => { const filePath = path.join(dir, file); const stat = fs.statSync(filePath); if (stat.isDirectory()) { walkDir(filePath, callback); } else if (file.endsWith('.vue') || file.endsWith('.js') || file.endsWith('.ts')) { callback(filePath); } }); } /** * 清理文件中的 console.log */ function cleanFile(filePath) { totalFiles++; let content = fs.readFileSync(filePath, 'utf-8'); const originalContent = content; // 计算原有的 console.log 数量 const logCount = (content.match(/console\.log\(/g) || []).length; if (logCount === 0) { return; } // 移除 console.log 语句(保留 console.error 和 console.warn) // 匹配整行的 console.log content = content.replace(/^[ \t]*console\.log\([^)]*\);?\s*$/gm, ''); // 移除行内的 console.log(可能在其他代码之后) content = content.replace(/console\.log\([^)]*\);?\s*/g, ''); // 清理多余的空行(但保留最多2个连续空行) content = content.replace(/\n\n\n+/g, '\n\n'); // 如果内容有变化,写回文件 if (content !== originalContent) { fs.writeFileSync(filePath, content, 'utf-8'); cleanedFiles++; totalLogsRemoved += logCount; console.log(`✓ 清理 ${path.relative(process.cwd(), filePath)} (移除 ${logCount} 个 console.log)`); } } // 主函数 console.log('='.repeat(60)); console.log('开始清理前端 console.log 调试语句'); console.log('='.repeat(60)); console.log(); targetDirs.forEach(dir => { const fullPath = path.join(__dirname, dir); if (fs.existsSync(fullPath)) { console.log(`正在扫描目录: ${dir}`); walkDir(fullPath, cleanFile); } else { console.log(`⚠ 目录不存在: ${dir}`); } }); console.log(); console.log('='.repeat(60)); console.log('清理完成!'); console.log('='.repeat(60)); console.log(`总文件数: ${totalFiles}`); console.log(`清理文件数: ${cleanedFiles}`); console.log(`移除的 console.log 总数: ${totalLogsRemoved}`); console.log(); console.log('注意:console.error 和 console.warn 已保留'); console.log('='.repeat(60));