chore: project scaffold, build config, scripts and README
Bun + SvelteKit (static adapter) + Electron project files, icon resources, dev/e2e/bench scripts and the README documenting the app. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
437887207c
commit
0b5f8bfa8b
27 files changed
+2050
No files matched your search
@@ -0,0 +1,33 @@
|
||||
// `bun run dev` runs this: Electron with --dev, restarted whenever a file in electron/ changes.
|
||||
// (Vite hot-reloads the page by itself, but the main process only loads its code once.)
|
||||
import { spawn } from 'node:child_process';
|
||||
import { watch } from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const root = path.join(path.dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const electron = path.join(root, 'node_modules', '.bin', 'electron');
|
||||
let child = null;
|
||||
let restarting = false;
|
||||
let timer = null;
|
||||
|
||||
function start() {
|
||||
child = spawn(electron, ['.', '--dev', ...process.argv.slice(2)], { cwd: root, stdio: 'inherit' });
|
||||
child.on('exit', (code) => {
|
||||
if (restarting) { restarting = false; start(); return; }
|
||||
process.exit(code ?? 0); // the window was closed: stop dev mode, as before
|
||||
});
|
||||
}
|
||||
|
||||
watch(path.join(root, 'electron'), { recursive: true }, (_event, file) => {
|
||||
if (!file || !/\.(c?js|json)$/.test(file)) return;
|
||||
clearTimeout(timer);
|
||||
timer = setTimeout(() => {
|
||||
console.log(`[app] ${file} changed, restarting Electron`);
|
||||
restarting = true;
|
||||
child.kill('SIGTERM');
|
||||
}, 250);
|
||||
});
|
||||
|
||||
for (const sig of ['SIGINT', 'SIGTERM']) process.on(sig, () => { restarting = false; child?.kill(sig); });
|
||||
start();
|
||||
Reference in new issue
Block a user