nodejsから実行するコマンドのログをstreamで出力する

累計閲覧数 646 PV

以下のような実装を行うことでログを適宜取得できる。

import { spawn } from "child_process";

const cmd = (command: string, args: string, cwd: string): Promise<void> => {
  const promise: Promise<void> = new Promise(resolve => {
    console.log(`${command} ${args}`);

    const childProcess = spawn(command, args.split(" "), { cwd, env });

    childProcess.stdout.on("data", data => {
      console.log(data.toString().trim()); // streamでログを出力する
    });

    childProcess.stdout.on("end", () => {
      resolve();
    });

  });
  return promise;
};