mirror of
https://github.com/Silentely/eSIM-Tools.git
synced 2026-09-03 06:24:20 +08:00
- 新增统一的中间件模块,提供鉴权、CORS和错误处理功能 - 重构所有Functions使用withAuth中间件简化代码结构 - 添加安全存储模块替代localStorage,防御XSS攻击 - 引入HTML清理工具,自动转义特殊字符和验证URL安全性 - 创建代码质量检查脚本,验证语法、环境变量和依赖完整性 - 添加构建日志工具和重构脚本,统一替换console.log为Logger - 引入ESLint配置,提升代码质量和一致性 - 重构Giffgaff相关API,统一错误处理和验证逻辑 - 优化构建脚本,添加压缩和图片优化功能 - 新增健康检查端点,用于服务监控和状态报告
129 lines
4.3 KiB
JavaScript
129 lines
4.3 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* 更新构建脚本中的console日志为BuildLogger
|
|
* 仅替换普通的console.log,保留console.error和console.warn
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// 需要处理的脚本文件
|
|
const SCRIPTS_TO_UPDATE = [
|
|
'build-static.js',
|
|
'deploy-prepare.js',
|
|
'deploy-analyze.js',
|
|
'test-deploy-config.js',
|
|
'optimize-images.js',
|
|
'compress.js',
|
|
'security-check.js'
|
|
];
|
|
|
|
// 需要排除的文件
|
|
const EXCLUDE_FILES = [
|
|
'logger.js',
|
|
'replace-console-log.js',
|
|
'update-script-logging.js'
|
|
];
|
|
|
|
function updateScriptLogging(filePath) {
|
|
try {
|
|
let content = fs.readFileSync(filePath, 'utf8');
|
|
const originalContent = content;
|
|
|
|
// 检查是否已经导入了BuildLogger
|
|
const hasLoggerImport = /const\s+(?:BuildLogger|Logger)\s*=\s*require/.test(content);
|
|
|
|
// 检查是否有console.log需要替换
|
|
const hasConsoleLog = /console\.log\s*\(/.test(content);
|
|
|
|
if (!hasConsoleLog) {
|
|
console.log(`⏭️ 跳过 ${path.basename(filePath)} - 无console.log`);
|
|
return { replaced: false };
|
|
}
|
|
|
|
// 替换console.log为BuildLogger.log
|
|
// 识别带emoji的success消息
|
|
content = content.replace(/console\.log\((['"`])✅([^'"`]*)\1\)/g, 'BuildLogger.success(\'$2\')');
|
|
content = content.replace(/console\.log\((['"`])❌([^'"`]*)\1\)/g, 'BuildLogger.error(\'$2\')');
|
|
content = content.replace(/console\.log\((['"`])⚠️([^'"`]*)\1\)/g, 'BuildLogger.warn(\'$2\')');
|
|
content = content.replace(/console\.log\((['"`])🔧([^'"`]*)\1\)/g, 'BuildLogger.log(\'🔧$2\')');
|
|
content = content.replace(/console\.log\((['"`])📊([^'"`]*)\1\)/g, 'BuildLogger.log(\'📊$2\')');
|
|
|
|
// 替换剩余的console.log
|
|
content = content.replace(/console\.log\s*\(/g, 'BuildLogger.log(');
|
|
|
|
// 如果还没有导入BuildLogger,在文件开头添加导入
|
|
if (!hasLoggerImport && hasConsoleLog) {
|
|
// 在第一个require之后或文件开头添加
|
|
const importStatement = `const BuildLogger = require('./logger.js');\n`;
|
|
|
|
if (/^const\s+/.test(content)) {
|
|
// 在最后一个require之后添加
|
|
const lastRequireMatch = content.match(/const\s+\w+\s*=\s*require\([^)]+\);?/g);
|
|
if (lastRequireMatch && lastRequireMatch.length > 0) {
|
|
const lastRequire = lastRequireMatch[lastRequireMatch.length - 1];
|
|
const lastRequireIndex = content.lastIndexOf(lastRequire);
|
|
const insertIndex = lastRequireIndex + lastRequire.length;
|
|
content = content.slice(0, insertIndex) + '\n' + importStatement + content.slice(insertIndex);
|
|
} else {
|
|
content = importStatement + content;
|
|
}
|
|
} else {
|
|
content = importStatement + '\n' + content;
|
|
}
|
|
}
|
|
|
|
if (content !== originalContent) {
|
|
fs.writeFileSync(filePath, content, 'utf8');
|
|
const count = (originalContent.match(/console\.log\s*\(/g) || []).length;
|
|
console.log(`✅ ${path.basename(filePath)} - 替换了${count}处console.log`);
|
|
return { replaced: true, count };
|
|
} else {
|
|
console.log(`⏭️ 跳过 ${path.basename(filePath)} - 无需修改`);
|
|
return { replaced: false };
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error(`❌ 处理 ${path.basename(filePath)} 失败:`, error.message);
|
|
return { replaced: false, error: true };
|
|
}
|
|
}
|
|
|
|
function main() {
|
|
console.log('🚀 开始更新构建脚本日志...\n');
|
|
|
|
let totalFiles = 0;
|
|
let replacedFiles = 0;
|
|
let totalReplacements = 0;
|
|
|
|
SCRIPTS_TO_UPDATE.forEach(filename => {
|
|
const filePath = path.join(__dirname, filename);
|
|
|
|
if (!fs.existsSync(filePath)) {
|
|
console.log(`⏭️ 跳过 ${filename} - 文件不存在`);
|
|
return;
|
|
}
|
|
|
|
if (EXCLUDE_FILES.includes(filename)) {
|
|
console.log(`⏭️ 跳过 ${filename} - 已排除`);
|
|
return;
|
|
}
|
|
|
|
totalFiles++;
|
|
const result = updateScriptLogging(filePath);
|
|
if (result.replaced) {
|
|
replacedFiles++;
|
|
totalReplacements += result.count || 0;
|
|
}
|
|
});
|
|
|
|
console.log('\n📊 替换统计:');
|
|
console.log(` 总文件数: ${totalFiles}`);
|
|
console.log(` 已修改文件: ${replacedFiles}`);
|
|
console.log(` console.log替换数: ${totalReplacements}`);
|
|
console.log('\n✨ 完成!');
|
|
console.log('\n💡 提示: 构建脚本的日志现在使用带颜色的BuildLogger输出');
|
|
}
|
|
|
|
main();
|