Spawn the Electron binary directly in dev/preview mode but forward
SIGINT/SIGTERM/SIGHUP from the electron-vite parent to the child,
matching Electron's own CLI wrapper (node_modules/electron/cli.js).
Without this, Ctrl-C sends SIGINT to the foreground process group once:
the Node parent exits immediately (no handler) and the Electron child
gets only a single SIGINT. On macOS, an Electron app whose before-quit
handler calls preventDefault() and later calls app.quit() can stall in
AppKit's event loop in that path. Under a direct 'electron .' launch
the CLI shim forwards SIGINT as well, so Electron gets it twice and
exits cleanly. Matching that behavior here fixes the hang.
Fixes#899
`ChildProcess`'s `close` event fires as `(code, signal)` and `code` is null when the
child was terminated by a signal. `process.exit` ignores its second argument and
coerces null to 0, so passing the listener directly reports every signal death as a
successful exit.
Handle the two arguments explicitly so a signal death exits non-zero.
Vite 8 defaults transform to Oxc; esbuild:false alone is ignored and
warns. SWC should disable both. Fixes#916.
Co-authored-by: edenbuilds <279970382+edenbuilds@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The `clearLine` and `writeLine` helpers use TTY-only methods (`clearLine`, `cursorTo`,
`moveCursor`) without checking `process.stdout.isTTY`, causing builds to crash in
non-interactive environments like CI or piped output.
See error I got in my CI environment:
```
vite v7.3.1 building ssr environment for production...
✗ Build failed in 7ms
✓ 0 modules transformed.
✗ Build failed in 9ms
error during build:
[vite:isolate-entries] Could not load virtual:isolate-entries:
[vite:transform-reporter] process.stdout.clearLine is not a function
```