// 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; const fullBasePath = data.siteConfig.basePath; const fullDomain = data.siteConfig.domain; html = html.replace(/{{langCode}}/g, lang); html = html.replace(/{{title}}/g, content.title); html = html.replace(/{{metaDesc}}/g, content.metaDesc); // SEO Dynamic Tags const canonicalUrl = `${fullDomain}${fullBasePath}/${lang}/index.html`; html = html.replace(/{{canonicalUrl}}/g, canonicalUrl); // Use a default OG image or generate one (placeholder for now) html = html.replace(/{{ogImage}}/g, `${fullDomain}${fullBasePath}/assets/og-shared.jpg`); // 语言链接 - 动态生成 (保持相对路径,兼容性更好) 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} 版生成完毕`); }); // 生成 sitemap.xml const sitemap = ` ${data.languages.map(lang => ` ${data.siteConfig.domain}${data.siteConfig.basePath}/${lang}/index.html ${new Date().toISOString().split('T')[0]} 0.80 `).join('')} `; fs.writeFileSync(path.join(__dirname, 'dist', 'sitemap.xml'), sitemap); console.log('✅ sitemap.xml 已生成'); // 生成 robots.txt const robots = `User-agent: * Allow: / Sitemap: ${data.siteConfig.domain}${data.siteConfig.basePath}/sitemap.xml `; fs.writeFileSync(path.join(__dirname, 'dist', 'robots.txt'), robots); console.log('✅ robots.txt 已生成');