import fs from 'fs'; const content = fs.readFileSync('src/data/mockData.js', 'utf-8'); const lines = content.split('\n'); // 要删除的重复函数及其行号范围 const duplicatesToRemove = [ { name: 'generateCalendarDays', start: 6018 }, { name: 'getWeekDays', start: 6091 }, { name: 'calculateStageProgress', start: 6108 }, { name: 'getCurrentActiveStage', start: 6133 }, { name: 'checkMilestoneBlockage', start: 6149 }, { name: 'updateStageStatuses', start: 6182 }, { name: 'getOverallProgress', start: 6214 } ]; // 找到每个函数的结束行 duplicatesToRemove.forEach(func => { let braceCount = 0; let inFunction = false; for (let i = func.start - 1; i < lines.length; i++) { const line = lines[i]; if (!inFunction && line.includes('export const ' + func.name)) { inFunction = true; } if (inFunction) { // 计算大括号 for (const char of line) { if (char === '{') braceCount++; if (char === '}') braceCount--; } // 函数结束 if (braceCount === 0 && line.includes('};')) { func.end = i + 1; // 行号(从1开始) break; } } } }); // 标记要删除的行 const linesToDelete = new Set(); duplicatesToRemove.forEach(func => { if (func.end) { for (let i = func.start; i <= func.end; i++) { linesToDelete.add(i); } console.log(`标记删除 ${func.name}: 行 ${func.start}-${func.end}`); } }); // 创建新内容,跳过标记的行 const newLines = []; lines.forEach((line, index) => { const lineNum = index + 1; if (!linesToDelete.has(lineNum)) { newLines.push(line); } }); // 写入文件 fs.writeFileSync('src/data/mockData.js', newLines.join('\n')); console.log(`\n✅ 已删除 ${duplicatesToRemove.length} 个重复的函数`); console.log(`📄 文件已更新`);