Files
Nano-Banana-AI-Image-Editor/electron/prod-runner.js
2025-10-07 00:53:54 +08:00

56 lines
1.5 KiB
JavaScript

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);
}
});