68 lines
1.5 KiB
JavaScript
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();
|
|
});
|