const fs = require('fs'); // 读取新的头像列表 const avatarList = JSON.parse(fs.readFileSync('./网页未导入数据/头像列表.json', 'utf-8')); // 新的头像URL选择(从更新后的头像列表中选择) const newAvatars = { // 袁嘉宇 - 使用列表中索引为20的头像 '袁嘉宇': avatarList[20].url, // 70a5030e91c730db9c2edbe8b6ca7bad.jpg // 冯欣怡(第3名) - 使用列表中索引为16的头像 '冯欣怡': avatarList[16].url // 568778504a7064376530a9d2a26592b1.jpg }; console.log('选择的新头像:'); console.log('袁嘉宇:', newAvatars['袁嘉宇']); console.log('冯欣怡:', newAvatars['冯欣怡']); // 读取mockData.js const mockDataPath = './src/data/mockData.js'; let mockDataContent = fs.readFileSync(mockDataPath, 'utf-8'); // 备份 const backupPath = `${mockDataPath}.backup_avatars_new_${new Date().toISOString().replace(/[:.]/g, '-')}`; fs.writeFileSync(backupPath, mockDataContent); console.log(`✅ 已创建备份:${backupPath}`); // 1. 更新user中的袁嘉宇头像 mockDataContent = mockDataContent.replace( /user:\s*{[\s\S]*?avatar:\s*"[^"]+"/, (match) => { return match.replace( /avatar:\s*"[^"]+"/, `avatar: "${newAvatars['袁嘉宇']}"` ); } ); // 2. 更新classRanking和其他地方的头像 for (const [name, url] of Object.entries(newAvatars)) { // 使用更精确的正则表达式来匹配每个学生的数据块 const namePattern = new RegExp( `(name|studentName):\\s*"${name}"[\\s\\S]*?avatar:\\s*"[^"]+"`, 'g' ); mockDataContent = mockDataContent.replace(namePattern, (match) => { return match.replace(/avatar:\s*"[^"]+"/, `avatar: "${url}"`); }); } // 3. 更新personalProfile中袁嘉宇的头像 mockDataContent = mockDataContent.replace( /personalProfile[\s\S]*?basicInfo:\s*{[\s\S]*?avatar:\s*"[^"]+"/, (match) => { return match.replace(/avatar:\s*"[^"]+"/, `avatar: "${newAvatars['袁嘉宇']}"`); } ); // 更新ClassRankModal组件中的头像映射 const modalPath = './src/components/ClassRankModal/index.jsx'; let modalContent = fs.readFileSync(modalPath, 'utf-8'); // 备份ClassRankModal const modalBackup = `${modalPath}.backup_avatars_new_${new Date().toISOString().replace(/[:.]/g, '-')}`; fs.writeFileSync(modalBackup, modalContent); // 更新ClassRankModal中的头像映射 for (const [name, url] of Object.entries(newAvatars)) { const casePattern = new RegExp( `case\\s*"${name}":[\\s\\S]*?avatarUrl\\s*=\\s*"[^"]+"`, 'g' ); modalContent = modalContent.replace(casePattern, (match) => { return match.replace(/avatarUrl\s*=\s*"[^"]+"/, `avatarUrl = "${url}"`); }); } // 写回文件 fs.writeFileSync(mockDataPath, mockDataContent); fs.writeFileSync(modalPath, modalContent); console.log('✅ 头像更新完成!'); console.log('更新的头像:'); console.log('- 袁嘉宇(个人信息): 使用列表中索引20的头像'); console.log('- 冯欣怡(第3名): 使用列表中索引16的头像');