82 lines
2.8 KiB
JavaScript
82 lines
2.8 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// 简单的语法检查函数
|
|
function hasSyntaxErrors(code) {
|
|
const lines = code.split('\n');
|
|
|
|
for (let i = 0; i < lines.length; i++) {
|
|
const line = lines[i].trim();
|
|
|
|
// 检查常见的语法错误模式
|
|
if (line.includes('p[s][0]') && !line.includes('p[s][0];')) {
|
|
console.log(`Syntax error detected at line ${i + 1}: missing semicolon after p[s][0]`);
|
|
return true;
|
|
}
|
|
|
|
// 检查未闭合的括号(简单检查)
|
|
const openBrackets = (line.match(/\[/g) || []).length;
|
|
const closeBrackets = (line.match(/\]/g) || []).length;
|
|
if (Math.abs(openBrackets - closeBrackets) > 2) {
|
|
console.log(`Bracket mismatch detected at line ${i + 1}`);
|
|
return true;
|
|
}
|
|
|
|
// 检查其他常见错误模式
|
|
if (line.includes('void 0)') && line.includes('if(')) {
|
|
console.log(`Conditional syntax error detected at line ${i + 1}`);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// 简单的console移除函数
|
|
function removeConsoleLocally(jsCode) {
|
|
return jsCode
|
|
.replace(/console\.(log|error|warn|info|debug|assert|trace|table|group|groupEnd|time|timeEnd)\s*\([^;]*?\);?\s*/g, '')
|
|
.replace(/\/\*[\s\S]*?\*\//g, '')
|
|
.replace(/\/\/.*$/gm, '');
|
|
}
|
|
|
|
// 测试runtime.js文件
|
|
async function testRuntimeProcessing() {
|
|
console.log('🧪 Testing Runtime.js with Simple Processor');
|
|
console.log('==========================================');
|
|
|
|
const runtimePath = path.join(__dirname, '../../dist/common/runtime.js');
|
|
|
|
if (!fs.existsSync(runtimePath)) {
|
|
console.log('❌ runtime.js file not found');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const originalCode = fs.readFileSync(runtimePath, 'utf8');
|
|
console.log(`📄 Original file size: ${originalCode.length} characters`);
|
|
|
|
// 检查语法错误
|
|
const hasError = hasSyntaxErrors(originalCode);
|
|
|
|
if (hasError) {
|
|
console.log('⚠️ Syntax error detected - file would be skipped in parallel processing');
|
|
} else {
|
|
console.log('✅ No syntax errors detected');
|
|
|
|
// 尝试处理
|
|
const cleanedCode = removeConsoleLocally(originalCode);
|
|
console.log(`🧹 Cleaned file size: ${cleanedCode.length} characters`);
|
|
console.log(`📉 Size reduction: ${originalCode.length - cleanedCode.length} characters`);
|
|
}
|
|
|
|
console.log('\n✅ Simple processing test completed!');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Error processing runtime.js:', error.message);
|
|
}
|
|
}
|
|
|
|
testRuntimeProcessing(); |