commander, inquirer 사용하기(1)
commander를 사용하여 예제 프로그램을 제작합니다. commander와 더불어 CLI 프로그램과 사용자 간의 상호작용을 돕는 inquirer 패키지, 콘솔 텍스트에 스타일을 추가하는 chalk 패키지도 함께 사용합니다.
commander와 inquirer, chalk을 설치합니다.
$ npm i commander@5 inquirer chalk
프로그램을 commander와 inquirer로 재작성할 것입니다. 먼저 commander 사용법부터 간단히 알아봅시다.
#!/usr/bin/env node
const { program } = require("commander");
program.version("0.0.1", "-v, --version").name(cli);
program
.command("template <type>")
.usage("<type> --filename [filename] --path [path]")
.description("템플릿을 생성합니다.")
.alias("tmpl")
.option("-f, --filename [filename]", "파일명을 입력하세요.", "index")
.option("-d --directory [path]", "생성 경로를 입력하세요", ".")
.action((type, options) => {
console.log(type, options.filename, options.directory);
});
program.command("*", { noHelp: true }).action(() => {
console.log("해당 명령어를 찾을 수 있습니다.");
program.help();
});
program.parse(process.argv);
commander 패키지로부터 program 객체를 불러왔습니다. program 객체에는 다양한 메서드가 존재합니다. 하나씩 알아봅시다.
- version: 프로그램의 버전을 설정할 수 있습니다. 첫 번째 인수로 버전을 넣어주고, 두 번째 인수로 버전을 보여줄 옵션을 넣습니다. 여러 개인 경우 쉼표(,)로 구분하면 됩니다. 현재 --version으로 지정되어 있고, -v는 축약 옵션입니다. node -v나 npm -v처럼 cli -v를 프로그램의 버전을 확인할 수 있습니다.
- usage: 이 메서드를 사용하면 명령어의 사용법을 설정할 수 있습니다. 사용법은 명령 어에 도움 옵션(h 또는 -thelp)을 붙였을 때 나타나는 설명서에 표시됩니다. 설명서는 commander가 자동으로 생성합니다. [options)라고 되어 있는데, (J는 필수가 아닌 선택 이라는 뜻입니다. 즉, 옵션을 넣어도 되고 안 넣어도 됩니다.
- name : 명령어의 이름을 넣습니다. cli를 적으면 됩니다.
- command: 명령어를 설정하는 메서드입니다. 현재 template 〈type>과 *라는 두 개의 명령어 를 설정했습니다. 따라서 c11 template html과 같이 명령할 수 있게 됩니다. 이때 html이 〈type>에 대응됩니다. O는 필수라는 의미이므로 type을 넣지 않으면 에러가 발생합니다. * 는 와일드카드 명령어로, 나머지 모든 명령어를 의미합니다. template을 제외한 다른 명령 어를 입력했을 때 실행됩니다.
- description: 명령어에 대한 설명을 설정하는 메서드입니다. 역시 명령어 설명서에 표시됩 니다.
- alias: 명령어의 별칭을 설정할 수 있습니다. tempLate 명령어의 별칭이 tmp」로 설정되어 있으므로 1l template html 대신 cL1 tmpl html로 명령어를 실행할 수 있습니다.
- option: 명령어에 대한 부가적인 옵션을 설정할 수 있습니다. template 명령어 같은 경우에 는 파일명(--filename)과 생성 경로(-directory)를 옵션으로 가집니다. 이 메서드의 첫 번 째 인수가 옵션 명령어고, 두 번째 인수가 옵션에 대한 설명입니다. 마지막 인수는 옵션 기 본값입니다. 옵션을 입력하지 않았을 경우 자동으로 기본값이 적용됩니다. 옵션 이름으로 name은 위의 name 메서드와 충돌할 위험이 있으니 사용하지 않는 것이 좋습니다.
- requiredoption: option과 같은 역할을 하지만 필수로 입력해야 하는 옵션을 지정할 때 사 용합니다. 예제에서는 사용하지 않았습니다.
- action : 명령어에 대한 실제 동작을 정의하는 메서드입니다. <type> 같은 필수 요소나 옵션 들을 매개변수로 가져올 수 있습니다.
- help: 설명서를 보여주는 옵션입니다. h4 --help 옵션으로 설명서를 볼 수도 있지만, 이 메서드를 사용해 프로그래밍적으로 표시할 수도 있습니다.
- parse: program 객체의 마지막에 붙이는 메서드입니다. process. argv를 인수로 받아서 명령 어와 옵션을 파싱합니다.
이 메서드들을 조합해서 예제 코드처럼 명령어를 만들면 됩니다.
package.json의 bin 속성에 새로 만든 파일을 연결하고 다시 전역 설치합니다.
package.json
{
"name": "node-cli",
"version": "0.0.1",
"description": "nodejs cli program",
"main": "index.js",
"author": "ZeroCho",
"license": "ISC",
"bin": {
"cli": "./command.js"
},
"dependencies": {
"chalk": "^5.6.2",
"commander": "^5.1.0",
"inquirer": "^13.3.2"
}
}
콘솔
$ npm i -g'프로그래밍 언어 > NODE JS' 카테고리의 다른 글
| commander, inquirer 사용하기(3) (0) | 2026.04.03 |
|---|---|
| commander, inquirer 사용하기(2) (0) | 2026.03.31 |
| 간단한 콘솔 명령어 만들기(5) (0) | 2026.03.25 |
| 간단한 콘솔 명령어 만들기(4) (0) | 2026.03.22 |
| 간단한 콘솔 명령어 만들기(3) (0) | 2026.03.19 |