npmスクリプトを使用して子プロセスを生成すると、ipcチャネルが失われます。npmスクリプトによって生成された子プロセスから親プロセスへのメッセージの送信
私はこの
if (process.send) { process.send('child') }
のような子スクリプトを持っているので、のような別のスクリプトから、それ産卵場合は、親プロセスが正常に
var spawn = require('child_process').spawn
spawn('node', ['child.js'], {stdio: ['inherit', 'inherit', 'inherit', 'ipc'})
spawn.on('message', function (msg) { console.log(msg) })
を受信して、印刷メッセージますしかし、私はとnode child.js
を定義した場合私のpackage.jsonのnpmスクリプト
"scripts": {
"child": "node child.js"
}
これを代わりに行うspawn('npm', ['run', 'child'], {stdio: ['inherit', 'inherit', 'inherit', 'ipc'})
process.send
私の子スクリプトでは定義されていません。これはnpmがプロセスを生成しており、そのプロセスが私のstdio
の設定を継承していないためだと思います。おそらくこれを回避する方法があります。 npmスクリプトのドキュメントには、このトピックは記載されていません。