diff --git a/pkgs/prod.ts b/pkgs/prod.ts index e303cb1..5ae8008 100644 --- a/pkgs/prod.ts +++ b/pkgs/prod.ts @@ -6,6 +6,7 @@ import { g } from "utils/global"; g.main = { process: null, + slave_process: null, restart: { timeout: null as any, }, @@ -49,12 +50,18 @@ const startMain = (argv?: string) => { setTimeout(() => { subprocess.send("kill"); }, 5000); - main.process = startMain("skip_types"); + main.slave_process = startMain("skip_types"); } }, onExit(subprocess, exitCode, signalCode, error) { - clearTimeout(main.restart.timeout); - main.restart.timeout = setTimeout(startMain, 500); + if (main.process === subprocess) { + main.process = main.slave_process; + main.slave_process = null; + } else if (main.slave_process === subprocess) { + console.error("Failed to start slave process"); + } else { + main.restart.timeout = setTimeout(startMain, 500); + } }, }); }; diff --git a/pkgs/utils/global.ts b/pkgs/utils/global.ts index c5aae08..f05e0c1 100644 --- a/pkgs/utils/global.ts +++ b/pkgs/utils/global.ts @@ -50,6 +50,7 @@ export const g = global as unknown as { skip_build_types: boolean; main: { process: null | Subprocess; + slave_process: null | Subprocess; restart: { timeout: any; };