diff --git a/packages/nx/src/tasks-runner/fork.ts b/packages/nx/src/tasks-runner/fork.ts index 4c5c9db22c..a8aa72846e 100644 --- a/packages/nx/src/tasks-runner/fork.ts +++ b/packages/nx/src/tasks-runner/fork.ts @@ -1,6 +1,7 @@ import { fork, Serializable } from 'child_process'; import { join } from 'path'; import { PseudoIPCClient } from './pseudo-ipc'; +import { signalToCode } from '../utils/exit-codes'; const pseudoIPCPath = process.argv[2]; const forkId = process.argv[3]; @@ -35,3 +36,18 @@ childProcess.on('exit', (code) => { pseudoIPC.close(); process.exit(code); }); + +// Terminate the child process when exiting +process.on('exit', () => { + childProcess.kill(); +}); +process.on('SIGINT', () => { + childProcess.kill('SIGTERM'); + process.exit(signalToCode('SIGINT')); +}); +process.on('SIGTERM', () => { + childProcess.kill('SIGTERM'); +}); +process.on('SIGHUP', () => { + childProcess.kill('SIGTERM'); +});