Skip to content
30 changes: 29 additions & 1 deletion packages/webpack-cli/lib/webpack-cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -2324,14 +2324,42 @@ class WebpackCLI {
return;
}

let needForceShutdown = false;
if (compiler.options.cache) {
const signals = ["SIGINT", "SIGTERM"];

signals.forEach((signal) => {
const listener = () => {
if (needForceShutdown) {
process.exit();
}

this.logger.info(
"Gracefully shutting down. To force exit, press ^C again. Please wait...",
);

needForceShutdown = true;

compiler.close(() => {
process.exit();
});
};

process.on(signal, listener);
});
}

const isWatch = (compiler) =>
compiler.compilers
? compiler.compilers.some((compiler) => compiler.options.watch)
: compiler.options.watch;

if (isWatch(compiler) && this.needWatchStdin(compiler)) {
process.stdin.on("end", () => {
process.exit(0);
compiler.close(() => {
process.exit(0);
});
needForceShutdown = true;
});
process.stdin.resume();
}
Expand Down