기본 패턴
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/promises | await 기반 API 제공 |
주의할 점
readline 인터페이스를 닫지 않으면 프로세스가 계속 살아 있을 수 있습니다. 입력이 끝난 뒤에는
rl.close()를 호출해 종료 흐름을 분명하게 만드는 편이 좋습니다.
참고 링크
1 sources