/** * 修复 show-menu-by-longpress 的错误用法 * 将 :show-menu-by-longpress="true" 替换为 show-menu-by-longpress * 使用方法:node scripts/fix-longpress-syntax.js */ const fs = require('fs') const path = require('path') // 需要处理的目录 const dirs = [ 'components', 'components-diy', 'pages', 'pages_goods', 'pages_order', 'pages_promotion', 'pages_tool', 'uni_modules' ] // 排除的目录 const excludeDirs = [ 'node_modules', '.git', 'unpackage', 'dist' ] /** * 检查是否应该排除 */ function shouldExclude(filePath) { return excludeDirs.some(dir => filePath.includes(dir)) } /** * 修复单个文件 */ function fixFile(filePath) { let content = fs.readFileSync(filePath, 'utf-8') let modified = false // 错误的写法1: :show-menu-by-longpress="true" // 错误的写法2: :show-menu-by-longpress='true' const wrongPatterns = [ /:show-menu-by-longpress\s*=\s*["']true["']/gi, /:show-menu-by-longpress\s*=\s*\{true\}/gi ] wrongPatterns.forEach(pattern => { if (pattern.test(content)) { content = content.replace(pattern, 'show-menu-by-longpress') modified = true } }) // 确保属性后有空格或结束符 content = content.replace(/show-menu-by-longpress\/>/g, 'show-menu-by-longpress />') content = content.replace(/show-menu-by-longpress>/g, 'show-menu-by-longpress >') if (modified) { fs.writeFileSync(filePath, content, 'utf-8') console.log(`✓ 已修复: ${filePath}`) return 1 } return 0 } /** * 递归遍历目录 */ function walkDir(dir, callback) { if (shouldExclude(dir)) return try { const files = fs.readdirSync(dir) files.forEach(file => { const filePath = path.join(dir, file) if (shouldExclude(filePath)) return const stat = fs.statSync(filePath) if (stat.isDirectory()) { walkDir(filePath, callback) } else if (file.endsWith('.vue')) { callback(filePath) } }) } catch (err) { console.error(`✗ 无法读取目录: ${dir}`) } } // 主程序 let totalFiles = 0 let fixedFiles = 0 console.log('开始修复 show-menu-by-longpress 语法...\n') dirs.forEach(dir => { const fullPath = path.join(__dirname, '..', dir) if (fs.existsSync(fullPath)) { walkDir(fullPath, (filePath) => { totalFiles++ fixedFiles += fixFile(filePath) }) } }) console.log(`\n修复完成!`) console.log(`总共扫描: ${totalFiles} 个文件`) console.log(`成功修复: ${fixedFiles} 个文件`) console.log(`\n正确的用法:`); console.log(` `); console.log(` (如果需要动态控制)`);