2016-06-01 5 views
1

可能であれば、npmスクリプトがCTRL + Cで終了したときにコマンドまたはスクリプトを実行したいと思います。たとえば、gulp watchが中断された場合などです。 可能でしょうか?スクリプト終了時のNodeJS runコマンド

+0

は、これらの子プロセスです(つまり、あなたはNodeJSプロセス(複数可)を開始しているあなたがいます別のアプリ内から観察しようとしていますか?) –

答えて

3

プロセスが終了しようとしているときexitイベントが放出されます。この時点でイベントループの終了を防ぐ方法はなく、すべての「終了」リスナーが実行を終了すると、プロセスは終了します。したがって、このハンドラでのみ同期操作を実行する必要があります。同期いくつかのコマンドを起動するにはNode.js process docs

から

、あなたはSynchronous Process Creationになります:

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

'exit(while)(true){...}'ループを 'exit'リスナの内部で実行すると、終了しますか? –

+0

私はそうすることをお勧めしません。あなたがそれをした場合、スレッドはスタックされ、とにかく非同期関数を実行することができなくなります。 –

1

npmで実行するカスタムスクリプトをお持ちの場合は、プロセスまたは子プロセスのexitイベントを聞くことができます。例えば

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

詳細情報here

関連する問題