Initial commit of akmon project

This commit is contained in:
2026-01-20 08:04:15 +08:00
commit 77a2bab985
1309 changed files with 343305 additions and 0 deletions

154
uts_android_fix_script.js Normal file
View File

@@ -0,0 +1,154 @@
// UTS Android 兼容性修复脚本
// 该脚本用于批量修复 pages/ec/ 下所有 .uvue 文件的 UTS Android 兼容性问题
const fs = require('fs');
const path = require('path');
// 定义修复规则
const fixRules = [
// 1. 数组类型从 Type[] 改为 Array<Type>
{
pattern: /ref<(\w+)\[\]>/g,
replacement: 'ref<Array<$1>>'
},
{
pattern: /computed<(\w+)\[\]>/g,
replacement: 'computed<Array<$1>>'
},
{
pattern: /: (\w+)\[\]/g,
replacement: ': Array<$1>'
},
// 2. 可选属性从 ? 改为 | null
{
pattern: /(\w+)\?:\s*(\w+)/g,
replacement: '$1: $2 | null'
},
// 3. 空值判断从 == null 改为 === null
{
pattern: /== null/g,
replacement: '=== null'
},
{
pattern: /!= null/g,
replacement: '!== null'
},
// 4. 逻辑判断从 if (variable) 改为 if (variable !== null)
{
pattern: /if\s*\(\s*(\w+)\s*\)/g,
replacement: 'if ($1 !== null)'
},
// 5. for 循环的 i 添加类型
{
pattern: /for\s*\(\s*let\s+i\s*=/g,
replacement: 'for (let i: Int ='
},
// 6. CSS 中的 vh 单位替换为固定像素
{
pattern: /min-height:\s*100vh/g,
replacement: 'min-height: 600px'
},
{
pattern: /height:\s*100vh/g,
replacement: 'height: 600px'
},
// 7. 删除不支持的 CSS 属性
{
pattern: /gap:\s*[^;]+;/g,
replacement: ''
},
{
pattern: /display:\s*grid[^;]*;/g,
replacement: 'display: flex;'
}
];
// 处理单个文件
function processFile(filePath) {
try {
let content = fs.readFileSync(filePath, 'utf8');
let modified = false;
// 应用所有修复规则
fixRules.forEach(rule => {
const newContent = content.replace(rule.pattern, rule.replacement);
if (newContent !== content) {
content = newContent;
modified = true;
}
});
// 如果文件被修改,写回文件
if (modified) {
fs.writeFileSync(filePath, content, 'utf8');
console.log(`✅ 已修复: ${filePath}`);
return true;
} else {
console.log(`⏭️ 无需修改: ${filePath}`);
return false;
}
} catch (error) {
console.error(`❌ 处理文件失败 ${filePath}:`, error.message);
return false;
}
}
// 递归处理目录
function processDirectory(dirPath) {
const items = fs.readdirSync(dirPath);
let totalFiles = 0;
let modifiedFiles = 0;
items.forEach(item => {
const fullPath = path.join(dirPath, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
const [subTotal, subModified] = processDirectory(fullPath);
totalFiles += subTotal;
modifiedFiles += subModified;
} else if (item.endsWith('.uvue')) {
totalFiles++;
if (processFile(fullPath)) {
modifiedFiles++;
}
}
});
return [totalFiles, modifiedFiles];
}
// 主函数
function main() {
const targetDir = path.join(__dirname, 'pages', 'ec');
if (!fs.existsSync(targetDir)) {
console.error('❌ pages/ec 目录不存在');
return;
}
console.log('🚀 开始修复 UTS Android 兼容性问题...');
console.log(`📂 目标目录: ${targetDir}`);
const [totalFiles, modifiedFiles] = processDirectory(targetDir);
console.log('\n📊 修复完成统计:');
console.log(`📄 总文件数: ${totalFiles}`);
console.log(`✅ 修改文件数: ${modifiedFiles}`);
console.log(`⏭️ 无需修改: ${totalFiles - modifiedFiles}`);
if (modifiedFiles > 0) {
console.log('\n🎉 UTS Android 兼容性修复完成!');
} else {
console.log('\n✨ 所有文件已符合 UTS Android 标准');
}
}
// 运行脚本
main();