【发布时间】:2016-10-01 00:26:33
【问题描述】:
如果可能的话,我想在使用 CTRL + C 杀死一个 npm 脚本时执行一些命令或脚本。例如,如果 gulp watch 被中断。 有可能的?
【问题讨论】:
-
这些是子进程吗(即,您正在启动您试图从另一个应用程序中观察的 NodeJS 进程)?
如果可能的话,我想在使用 CTRL + C 杀死一个 npm 脚本时执行一些命令或脚本。例如,如果 gulp watch 被中断。 有可能的?
【问题讨论】:
如果你有一个通过 npm 运行的自定义脚本,你可以监听进程或子进程的 exit 事件。例如
process.on('exit', () => {
console.log('I am exiting....');
});
更多信息here
【讨论】:
当进程即将退出时,会发出
exit事件。此时无法阻止事件循环的退出,一旦所有“退出”侦听器完成运行,该进程将退出。因此,您只能在此处理程序中执行同步操作。
要同步生成一些命令,您可以查看Synchronous Process Creation:
process.on('exit', code => {
require('child_process').spawnSync(...);
require('child_process').execSync(...);
require('child_process').execFileSync(...);
});
【讨论】:
exit 监听器中运行while(true){...} 循环,它会终止吗?