Node.js프로세스와 CLI

readline CLI 기본

터미널 입력을 받아 간단한 CLI를 만드는 Node.js `readline` 기본 흐름을 정리합니다.

마지막 수정 2026년 3월 20일

기본 패턴

javascript
import readline from "node:readline/promises";
import { stdin as input, stdout as output } from "node:process";

const rl = readline.createInterface({ input, output });

const name = await rl.question("이름을 입력하세요: ");
console.log(`Hello, ${name}`);

rl.close();

설명

  • readline은 표준 입력과 출력을 연결해 터미널 대화형 프로그램을 만들 때 쓰는 기본 모듈입니다.
  • 단순 로그 출력만 하던 스크립트에서 한 단계 나아가, 사용자 입력을 받고 분기하는 CLI를 만들 수 있게 해 줍니다.
  • 최근에는 node:readline/promises를 쓰면 await rl.question() 형태로 더 읽기 쉽게 작성할 수 있습니다.
  • 이 모듈을 익혀 두면 설정 스크립트, 마이그레이션 도구, 내부 자동화 CLI를 만들 때 바로 활용할 수 있습니다.
  • 작은 기능이지만, Node가 서버만이 아니라 자동화와 도구 제작에도 강하다는 점을 잘 보여 주는 카드입니다.

짧은 예제

javascript
const answer = await rl.question("계속할까요? (y/n) ");

if (answer.toLowerCase() === "y") {
  console.log("계속 진행합니다.");
}

빠른 정리

항목역할
createInterface({ input, output })입력/출력 연결
rl.question(text)사용자 입력 한 줄 받기
rl.close()인터페이스 종료
node:readline/promisesawait 기반 API 제공

주의할 점

readline 인터페이스를 닫지 않으면 프로세스가 계속 살아 있을 수 있습니다. 입력이 끝난 뒤에는 rl.close()를 호출해 종료 흐름을 분명하게 만드는 편이 좋습니다.

참고 링크

1 sources