質問: require('child_process') execSync(sampleディレクトリに移動)←シェルを起動 execSync(sampleディレクトリでsample.txtを作成)←別のシェルを起動 ``` なんとかつなげてコマンドを実行できる方法はないでしょうか? あるディレクトリでgulpコマンドを実行したいのですがnodeで実行した時の カレントディレクトリが実行したいディレクトリと違う場所なので困っています...。 よろしくお願いいたします。
回答: 調べた感じ Node.jsで複数コマンドを処理する方法がないようですね。 ですが、質問内容に関しての回避策のみ2個見つけました。 * execSync実行時のカレントディレクトリを指定 * Node.jsのカレントディレクトリを変更(process.chdir) 後者は多分イケる程度ですが、 前者は確実に動作するでしょうし、 カレントディレクトリというグローバル変数の値を使わないのでこちらが推奨でしょう。 ドキュメント: child_process.execSync(command, options) execSyncには省略可能な第2引数が存在します。 それの`cmd`キーがまんま質問内容の要望である「子プロセスの現在の作業ディレクトリ」の指定です。 これに移動先のパスをString型で渡してやれば完了です。 ``` const { execSync } = require('child_process') execSync(`touch sample.txt`, {cmd: 'sampleディレクトリ'}) ``` もし、純粋な複数コマンドにしたければ、 シェルスクリプト(bash)ファイルを作成して、 その中で複数コマンドを実現し、そのファイルを実行するような作りにする必要がありそうですね。