const fs = require('fs') const path = require('path') const { glob } = require('glob') // 读取中文语言包 const zhCN = require('../i8n.js') // 递归获取所有需要处理的文件 async function getAllFiles(dir, patterns) { console.log('搜索目录:', dir) console.log('搜索模式:', patterns) const files = await glob(patterns, { cwd: dir, ignore: ['node_modules/**', 'dist/**', '**/i18n/**', '**/languages/**'] }) console.log('找到的文件数量:', files.length) return files } // 获取嵌套对象的值 function getNestedValue(obj, path) { return path.split('.').reduce((current, key) => current && current[key], obj) } // 替换文件内容 function replaceContent(content) { // 替换模板中的 $t('key') // content = content.replace( // /(? { // const value = getNestedValue(zhCN, key) // return value ? `'${value}'` : match // } // ) // 替换 JavaScript 中的 this.$t('key') content = content.replace(/this\.\$t\(['"]([^'"]+)['"]\)/g, (match, key) => { const value = getNestedValue(zhCN, key) return value ? `'${value}'` : match }) return content } // 主函数 async function main() { try { const srcPath = path.resolve(__dirname, '../src') console.log('源文件目录:', srcPath) // 只处理 views 和 components 目录 const patterns = [ 'views/**/*.vue', 'views/**/*.js', 'views/**/*.ts', 'components/**/*.vue', 'components/**/*.js', 'components/**/*.ts' ] const files = await getAllFiles(srcPath, patterns) if (files.length === 0) { console.log('警告:没有找到匹配的文件!') return } for (const file of files) { const filePath = path.resolve(srcPath, file) console.log('处理文件:', filePath) const content = fs.readFileSync(filePath, 'utf8') const newContent = replaceContent(content) if (newContent !== content) { fs.writeFileSync(filePath, newContent, 'utf8') console.log(`已处理文件: ${file}`) } } console.log('所有文件处理完成!') } catch (error) { console.error('处理过程中出错:', error) } } main()