【问题标题】:NodeJS run command when script is terminated脚本终止时NodeJS运行命令
【发布时间】:2016-10-01 00:26:33
【问题描述】:

如果可能的话,我想在使用 CTRL + C 杀死一个 npm 脚本时执行一些命令或脚本。例如,如果 gulp watch 被中断。 有可能的?

【问题讨论】:

  • 这些是子进程吗(即,您正在启动您试图从另一个应用程序中观察的 NodeJS 进程)?

标签: node.js npm gulp


【解决方案1】:

如果你有一个通过 npm 运行的自定义脚本,你可以监听进程或子进程的 exit 事件。例如

process.on('exit', () => {
  console.log('I am exiting....');
});

更多信息here

【讨论】:

    【解决方案2】:

    当进程即将退出时,会发出exit 事件。此时无法阻止事件循环的退出,一旦所有“退出”侦听器完成运行,该进程将退出。因此,您只能在此处理程序中执行同步操作。

    来自Node.js process docs

    要同步生成一些命令,您可以查看Synchronous Process Creation

    process.on('exit', code => {
      require('child_process').spawnSync(...);
      require('child_process').execSync(...);
      require('child_process').execFileSync(...);
    });
    

    【讨论】:

    • 如果您在exit 监听器中运行while(true){...} 循环,它会终止吗?
    • 我不建议这样做。如果你这样做了,那么线程就会被卡住,并且无论如何你都无法运行异步函数。
    猜你喜欢
    • 2010-12-11
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2012-10-24
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多