const { spawn } = require('child_process'); const fs = require('fs'); const path = require('path'); // 设置环境变量 process.env.NEXT_DISABLE_TELEMETRY = '1'; process.env.NODE_ENV = 'production'; process.env.BUILD_MODE = 'static'; console.log('🚀 开始静态构建...'); // 清理函数 function cleanup() { const dirs = ['.next', 'out']; dirs.forEach(dir => { try { if (fs.existsSync(dir)) { fs.rmSync(dir, { recursive: true, force: true }); console.log(`✅ 清理了 ${dir} 目录`); } } catch (error) { console.log(`⚠️ 清理 ${dir} 时遇到问题,继续执行...`); } }); } // 构建函数 function build() { return new Promise((resolve, reject) => { const buildProcess = spawn('npx', ['next', 'build'], { stdio: 'inherit', shell: true, env: { ...process.env, NEXT_DISABLE_TELEMETRY: '1', NODE_ENV: 'production', BUILD_MODE: 'static' } }); buildProcess.on('close', (code) => { if (code === 0) { console.log('✅ 构建成功完成!'); resolve(); } else { console.log(`❌ 构建失败,退出码: ${code}`); reject(new Error(`Build failed with code ${code}`)); } }); buildProcess.on('error', (error) => { console.error('❌ 构建过程出错:', error); reject(error); }); }); } // 验证输出 function verifyOutput() { const outDir = 'out'; if (fs.existsSync(outDir)) { const files = fs.readdirSync(outDir); console.log(`✅ 输出目录包含 ${files.length} 个文件/文件夹`); // 检查关键文件 const keyFiles = ['index.html', 'zh-TW', 'en', '_next']; keyFiles.forEach(file => { if (files.includes(file)) { console.log(`✅ 找到: ${file}`); } else { console.log(`⚠️ 缺失: ${file}`); } }); } else { console.log('❌ 输出目录不存在'); } } // 主执行流程 async function main() { try { console.log('🧹 清理旧文件...'); cleanup(); console.log('🔨 开始构建...'); await build(); console.log('🔍 验证输出...'); verifyOutput(); console.log('🎉 静态构建完成! 使用 "npm run serve" 预览网站'); } catch (error) { console.error('❌ 构建失败:', error.message); process.exit(1); } } main();