2025-02-04 01:30:36 -05:00

68 lines
1.5 KiB
JavaScript

import { spawn } from 'child_process';
import { watch } from 'fs';
import { exec } from 'child_process';
import { dirname } from 'path';
import { fileURLToPath } from 'url';
const __dirname = dirname(fileURLToPath(import.meta.url));
let electronProcess = null;
let isElectronRunning = false;
function runElectron() {
if (isElectronRunning) {
electronProcess.kill();
isElectronRunning = false;
}
// Set environment variable for development
const env = { ...process.env, NODE_ENV: 'development' };
electronProcess = spawn('electron', ['.'], {
stdio: 'inherit',
env
});
isElectronRunning = true;
electronProcess.on('close', () => {
isElectronRunning = false;
});
}
// Initial build
exec('tsc -p electron/tsconfig.json', (error) => {
if (error) {
console.error('Error building Electron files:', error);
return;
}
console.log('Initial Electron build complete');
runElectron();
});
// Watch for changes
watch('electron', { recursive: true }, (eventType, filename) => {
if (filename && filename.endsWith('.ts')) {
console.log(`File ${filename} changed, rebuilding...`);
exec('tsc -p electron/tsconfig.json', (error) => {
if (error) {
console.error('Error rebuilding Electron files:', error);
return;
}
console.log('Rebuild complete, restarting Electron...');
runElectron();
});
}
});
// Handle process termination
process.on('SIGINT', () => {
if (electronProcess) {
electronProcess.kill();
}
process.exit();
});