フォークはどうですか
複数のノードスクリプトを実行するもう1つのオプションは、単一のノードスクリプトを使用することです。これにより、他の多くのスクリプトをフォークできます。フォークはNodeでネイティブにサポートされているため、依存関係は追加されず、クロスプラットフォームです。
最小限の例
これは、スクリプトをそのまま実行し、親スクリプトのディレクトリにあると想定するだけです。
// fork-minimal.js - run with: node fork-minimal.js
const childProcess = require('child_process');
let scripts = ['some-script.js', 'some-other-script.js'];
scripts.forEach(script => childProcess.fork(script));
冗長な例
これは、引数を使用してスクリプトを実行し、多くの使用可能なオプションによって構成されます。
// fork-verbose.js - run with: node fork-verbose.js
const childProcess = require('child_process');
let scripts = [
{
path: 'some-script.js',
args: ['-some_arg', '/some_other_arg'],
options: {cwd: './', env: {NODE_ENV: 'development'}}
},
{
path: 'some-other-script.js',
args: ['-another_arg', '/yet_other_arg'],
options: {cwd: '/some/where/else', env: {NODE_ENV: 'development'}}
}
];
let processes = [];
scripts.forEach(script => {
let runningScript = childProcess.fork(script.path, script.args, script.options);
// Optionally attach event listeners to the script
runningScript.on('close', () => console.log('Time to die...'))
runningScripts.push(runningScript); // Keep a reference to the script for later use
});
フォークされたスクリプトとの通信
フォークには、親スクリプトがフォークされた子プロセスからイベントを受信したり、送信したりできるという利点もあります。一般的な例は、親スクリプトがフォークされた子を殺すことです。
runningScripts.forEach(runningScript => runningScript.kill());
その他の利用可能なイベントとメソッドについては、ドキュメントを参照してくださいChildProcess
&&
は、スクリプトを順次&
実行しながら、並行して実行します。