// 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 已生成');