Node.js Terminal 다루기

in kr •  7 years ago 

Node.js로 뭔가 관리하는 프로그램을 만들다 보면 터미널을 다루고 싶을때가 있다.

단순히 Console.log로 로그만 남기던 수준에서 좀 더 높은 레벨로 터미널을 다루고 싶을경우 process.stdout 을 이용하면 더 많은걸 할 수 있다.

사실 이 글을 남기는 이유는 미래에 내가 까먹을 것을 대비해서 일종의 백업용으로..

우선 화면을 정리하는거 부터.

process.stdout.write('\033c');

위와 같이 입력을 하면 전체 화면이 클리어가 된다. 터미널에서 clear를 입력한 효과를 볼 수 있다.

현재 화면의 터미널의 크기는 다음과 같이 구할 수 있다.

console.log(`${process.stdout.columns}x${process.stdout.rows}`);

만약에 화면을 리사이즈 했을 경우 사이즈를 실시간으로 구하려면 다음과 같은 코드도 가능하다.

process.stdout.on('resize', () => {
    process.stdout.write('\033c');
    console.log('screen size has changed!');
    console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

다음으로 커서를 위치하는 방법이다.
2가지 방법이 있는데, 상대 위치를 이용하는 방법과, 다른 하나는 절대 위치를 이용하는 방법이다.
이 방법에는 기본 모듈이 하나 필요하다.

const readline = require('readline');

위와 같은 모듈을 먼저 불러오고..

readline.cursorTo(process.stdout, posx,posy);

이 방법은 절대 위치로 화면 왼쪽위를 0,0 으로 기준으로 하여 x 값 , y 값으로 커서를 이동시키는것.

readline.moveCursor(process.stdout, posx,posy);

이 방법은 현재 커서의 위치를 기준으로 하여 이동시키게 된다. posy 는 둘다 생략 가능.

그리고 아쉽게도, 현재 위치를 얻어올 수 있는 방법은 없다. 따라서 계산하는 수밖에 없음.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!