// build.js const fs = require('fs'); const path = require('path'); const data = require('./data.js'); const template = fs.readFileSync(path.join(__dirname, 'template.html'), 'utf-8'); data.languages.forEach(lang => { const content = data.content[lang]; let html = template; html = html.replace(/{{langCode}}/g, lang); html = html.replace(/{{title}}/g, content.title); html = html.replace(/{{metaDesc}}/g, content.metaDesc); // 语言链接 - 动态生成 const langLinksHtml = data.languages.map(l => { const lContent = data.content[l]; // 只有当不是当前语言时,才显示链接 if (l === lang) return `${lContent.langName}`; return `${lContent.langName}`; }).join(''); html = html.replace(/{{languageLinks}}/g, langLinksHtml); // 表头 const headersHtml = content.headers.map(h => `${h}`).join(''); html = html.replace(/{{tableHeaders}}/g, headersHtml); // 表格行 + 详情行 const rowsHtml = content.cities.map((city, idx) => ` ${city.name} ${city.region} ${city.matches} ${city.budget} ${city.visa} ${city.tips}

${content.ui_stadium}

${city.std}

${content.ui_logistics}

${city.log}
`).join(''); html = html.replace(/{{tableRows}}/g, rowsHtml); const distDir = path.join(__dirname, 'dist'); const outputDir = path.join(distDir, lang); if (!fs.existsSync(distDir)) fs.mkdirSync(distDir); if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir); fs.writeFileSync(path.join(outputDir, 'index.html'), html); console.log(`✅ ${lang} 版生成完毕`); });