반응형

인터넷에서 리액트 배포 글을 찾아보면 주로 package.json 파일에 명령을 추가하는 방법으로 소개하고 있던데 나중에 복잡한 처리하기에 힘들어 보여서 별도의 스크립트 파일로 만들려고 노드js로 외부 프로그램을 실행하는 방법을 찾아봤다.

찾아보니 node.js의 기본 모듈 중 하나인 child_process가 해당 기능을 할 수 있었고 기본적으로 비동기로 작동한다. 동기적으로 사용하는 방법도 찾아보니까 async/await을 사용하던데 node.js 공식 문서를 보니까 동기적으로 동작하는 함수도 제공하고 있었다. 굳이 빙빙 돌려가며 async/await 쓰지 말고 그냥 제공하는 함수를 쓰는 게 보기에도 깔끔하고 편하다.


const childProcess = require('child_process');
childProcess.execSync('실행할 명령');

이렇게 사용하면 된다. 그런데 실행한 외부 프로그램이 출력하는 내용은 보이지 않고 조용히 실행된다. 물론 반환 값으로 stdout를 얻을 수 있지만 실시간이 아니여서 답답하다. 이건 { stdio: 'inherit' } 옵션을 추가하면 실행 도중 뜨는 출력도 실행 중인 터미널에 바로 출력된다.

아래처럼 함수로 만들어 두면 편리하게 사용할 수 있다.


const childProcess = require('child_process');
const exec = (cmd) => childProcess.execSync(cmd, { stdio: 'inherit' });
반응형

+ Recent posts