#!/usr/bin/env node import { spawn } from 'child_process'; import os from 'os'; // 内存限制配置(4GB总内存) const memoryLimits = [ { nodeOptions: '--max-old-space-size=1536', viteThreads: 1, name: '第一次尝试' }, { nodeOptions: '--max-old-space-size=1280', viteThreads: 1, name: '第二次尝试' }, { nodeOptions: '--max-old-space-size=1024', viteThreads: 1, name: '第三次尝试' } ]; async function runBuild(config) { console.log(`🚀 ${config.name}: 内存限制 ${config.nodeOptions}`); return new Promise((resolve, reject) => { const env = { ...process.env, NODE_OPTIONS: config.nodeOptions, VITE_BUILD_THREADS: config.viteThreads, NUXT_BUILD_PARALLEL: 'false', NUXT_SSR: 'true', VITE_PLUGIN_VUE_MAX_PARALLEL: '1', VITE_BUILD_MINIFY: 'esbuild', VITE_SSR_MANIFEST: 'false', VITE_SOURCEMAP: 'false' }; const buildProcess = spawn('npm', ['run', 'build'], { env, stdio: 'inherit', shell: true }); buildProcess.on('close', (code) => { if (code === 0) { console.log(`✅ ${config.name}: 构建成功!`); resolve(true); } else { console.log(`❌ ${config.name}: 构建失败,退出码 ${code}`); resolve(false); } }); buildProcess.on('error', (err) => { console.log(`❌ ${config.name}: 构建错误`, err.message); resolve(false); }); // 10分钟超时 setTimeout(() => { buildProcess.kill(); console.log(`⏰ ${config.name}: 构建超时`); resolve(false); }, 600000); }); } async function main() { console.log('🎯 开始内存优化构建(4GB限制)'); console.log(`💻 系统内存: ${Math.round(os.totalmem() / 1024 / 1024 / 1024)}GB`); for (let i = 0; i < memoryLimits.length; i++) { const success = await runBuild(memoryLimits[i]); if (success) { console.log('🎉 构建完成!'); process.exit(0); } if (i < memoryLimits.length - 1) { console.log('🔄 尝试更保守的设置...'); await new Promise(resolve => setTimeout(resolve, 5000)); // 等待5秒 } } console.log('💥 所有构建尝试都失败了'); console.log('💡 建议:'); console.log(' 1. 增加Docker内存限制'); console.log(' 2. 使用更强大的构建机器'); console.log(' 3. 考虑在外部构建后复制结果'); process.exit(1); } main().catch(console.error);