#!/usr/bin/env node /** * 测试静态构建和404页面功能 */ const fs = require('fs'); const path = require('path'); function testStaticBuild() { console.log('🧪 测试静态构建...\n'); const checks = [ { name: 'out目录存在', test: () => fs.existsSync('out'), required: true }, { name: 'index.html存在', test: () => fs.existsSync('out/index.html'), required: true }, { name: '404.html存在', test: () => fs.existsSync('out/404.html'), required: true }, { name: 'public/404.html存在', test: () => fs.existsSync('public/404.html'), required: true }, { name: 'zh-CN目录存在', test: () => fs.existsSync('out/zh-CN'), required: false }, { name: 'en目录存在', test: () => fs.existsSync('out/en'), required: false }, { name: 'zh-TW目录存在', test: () => fs.existsSync('out/zh-TW'), required: false } ]; let passed = 0; let failed = 0; checks.forEach(check => { const result = check.test(); const icon = result ? '✅' : (check.required ? '❌' : '⚠️'); const status = result ? 'PASS' : (check.required ? 'FAIL' : 'SKIP'); console.log(`${icon} ${check.name}: ${status}`); if (result) { passed++; } else if (check.required) { failed++; } }); console.log(`\n📊 测试结果: ${passed} 通过, ${failed} 失败\n`); if (failed > 0) { console.log('❌ 静态构建测试失败!'); console.log('💡 建议运行: npm run build:static\n'); return false; } else { console.log('✅ 静态构建测试通过!\n'); return true; } } function test404Content() { console.log('🔍 测试404页面内容...\n'); const files = ['public/404.html', 'out/404.html']; files.forEach(file => { if (fs.existsSync(file)) { const content = fs.readFileSync(file, 'utf8'); const checks = [ { name: '包含DOCTYPE', test: content.includes('') }, { name: '包含404标题', test: content.includes('404') }, { name: '包含语言检测', test: content.includes('detectLanguage') }, { name: '包含样式', test: content.includes('