You've already forked Nano-Banana-AI-Image-Editor
56 lines
1.5 KiB
JavaScript
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);
|
|
}
|
|
}); |