const { spawn } = require('child_process'); const path = require('path'); const fs = require('fs'); // 先编译 TypeScript 文件 const tsc = spawn('npx', ['tsc', '-p', 'tsconfig.electron.json'], { stdio: 'inherit', shell: true }); tsc.on('close', (code) => { if (code === 0) { // 编译成功后复制 preload.js 文件 const sourcePreload = path.join(__dirname, 'preload.js'); const destPreload = path.join(__dirname, 'dist', 'preload.js'); try { fs.copyFileSync(sourcePreload, destPreload); console.log('preload.js copied successfully'); } catch (err) { console.error('Failed to copy preload.js:', err); } // 编译成功后运行 Electron 应用 const electron = require('electron'); const appPath = path.join(__dirname, 'dist', 'main.js'); // 先确保应用已构建 const build = spawn('npm', ['run', 'build'], { stdio: 'inherit', shell: true }); build.on('close', (buildCode) => { if (buildCode === 0) { const child = spawn(electron, [appPath], { stdio: 'inherit', env: { ...process.env, NODE_ENV: 'production' } }); child.on('close', (code) => { process.exit(code || 0); }); } else { console.error('Build failed'); process.exit(buildCode || 1); } }); } else { console.error('TypeScript compilation failed'); process.exit(code || 1); } });