본문 바로가기
project

[Node.js] CLI 명령어 사용하기

by 안자두 2023. 1. 6.

CLI 명령어 추가하기

Node.js에는 cli 명령어를 추가할 수 있다.

package.json의 bin에 명령어와 해당 명령어 입력 시, 실행될 로직을 추가하면 된다.

{
  ...,
  "bin": {
      "[명령어]": "[실행 로직]"
  }
}

 

예를 들어, 아래와 같이 test.js 실행 파일을 생성하고 설정한 'test'라는 명령어를 통해 실행한다고 해보자.

#! /usr/bin/env node

console.log(process.argv);

- test.js

{
  "bin": {
    "my-test": "test.js"
  }
}

- package.json

package.json을 수정한 후에는 `npm -g i` 명령어로 업데이트된 package.json을 적용해주어야 한다.

 

등록한 명령어를 사용해 보자.

$ my-test test1 test2 test3

- bash에 명령어 입력하기

 

위와 같이 명령어를 입력하면 아래와 같은 결과가 도출된다.

# 첫 번째와 두 번째는 node와 file 실행 경로, 이후부터 입력한 값이 들어옴
[
  'C:\\Program Files\\nodejs\\node.exe',
  'C:\\실행 경로',
  'test1',
  'test2',
  'test3'
]

- 실행 결과

 

예제

이제 script를 수정하여 프로젝트에 새로운 파일을 생성하는 에제를 생성해 보자.

#! /usr/bin/env node

import { existsSync, mkdirSync, writeFileSync } from "fs";

// 명령어를 두 개 이하로 작성했을 경우,
if (process.argv.length < 3) {
  console.log("project 이름을 작성해주세요!");

  process.exit(1);
}

// 명령어를 세 개 이하로 작성했을 경우,
if (process.argv.length < 4) {
  console.log("file 이름을 작성해주세요!");

  process.exit(1);
}

const PROJECT_NAME = process.argv[2];
const FILE_NAME = process.argv[3];

(async () => {
  try {
    const isExistProject = existsSync(PROJECT_NAME);

    // 이미 존재하는 프로젝트일 경우, 해당 이름으로 된 파일이 없으면 생성, 있으면 error message
    if (isExistProject) {
      process.chdir(PROJECT_NAME);	// === cd PROJECT_NAME
      const isExistFile = existsSync(FILE_NAME);

      if (isExistFile) {
        console.log(
          `${FILE_NAME}는 이미 존재하는 파일입니다.`
        );

        EXIT();
      } else {
        writeFileSync(FILE_NAME, 'new file!');
        console.log(`${PROJECT_NAME}을 생성했습니다!`);
      }
    } // 존재하지 않는 프로젝트일 경우, 프로젝트 생성 후, 파일 생성
    else {
      mkdirSync(PROJECT_NAME);
      process.chdir(PROJECT_NAME);

      writeFileSync(FILE_NAME, 'new file!');
      console.log(`${PROJECT_NAME}을 생성했습니다!`);
    }
  } catch (error) {
    console.log(error);
  }
})();

- 새로운 파일을 생성하는 script 예제

 

등록한 'my-test'라는 명령어로 실행시킨 결과이다.

명령어 입력하기
생성된 project와 files

새로운 project와 file이 잘 생성된 것을 확인할 수 있다.

이 cli 명령어를 통해 반복적인 작업들을 단순화시킬 수 있을 것 같다.

728x90