diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 931559d0ef93c2..620c2e870b0546 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -1643,12 +1643,17 @@ const parentSigtermCallback: SigtermCallback = async (signal, exitCode) => { await Promise.all([...sigtermCallbacks].map((cb) => cb(signal, exitCode))) } +const drain = () => {} + export const setupSIGTERMListener = ( callback: (signal?: 'SIGTERM', exitCode?: number) => Promise, ): void => { if (sigtermCallbacks.size === 0) { process.once('SIGTERM', parentSigtermCallback) if (process.env.CI !== 'true') { + if (!process.stdin.isTTY) { + process.stdin.on('data', drain) + } process.stdin.on('end', parentSigtermCallback) } } @@ -1662,6 +1667,7 @@ export const teardownSIGTERMListener = ( if (sigtermCallbacks.size === 0) { process.off('SIGTERM', parentSigtermCallback) if (process.env.CI !== 'true') { + process.stdin.off('data', drain) process.stdin.off('end', parentSigtermCallback) } }