const fs = require('fs') const path = require('path') // 配置参数 const config = { inputDir: './pages', // 要扫描的目录 outputFile: './zh-CN.js', // 输出文件路径 extensions: ['.js', '.vue'], // 要处理的文件扩展名 chineseRegex: /[\u4e00-\u9fa5\u3000-\u303f\uff01-\uff5e\u201c-\u201d\u3008-\u3011]+/g } // 存储中文内容的 Set(自动去重) const chineseSet = new Set() /** * 递归遍历目录 */ function scanDirectory(dir) { const files = fs.readdirSync(dir) files.forEach(file => { const filePath = path.join(dir, file) const stat = fs.statSync(filePath) if (stat.isDirectory()) { scanDirectory(filePath) } else if (stat.isFile() &&config.extensions.includes(path.extname(filePath).toLowerCase())) { processFile(filePath) } }) } /** * 处理单个文件 */ function processFile(filePath) { try { const content = fs.readFileSync(filePath, 'utf-8') const matches = content.match(config.chineseRegex) if (matches) { matches.forEach(text => chineseSet.add(text)) } } catch (err) { console.error(`Error processing file ${filePath}:`, err) } } /** * 生成输出文件 */ function generateOutput() { const output = `// 自动生成的中文字符列表 module.exports = ${JSON.stringify([...chineseSet], null, 2)}` fs.writeFileSync(config.outputFile, output, 'utf-8') console.log(`找到 ${chineseSet.size} 个中文字符,已保存到 ${config.outputFile}`) } // 执行主流程 scanDirectory(config.inputDir) generateOutput()