node-cli

Younghwan Cha·2023년 5월 17일
0
post-thumbnail
post-custom-banner

node 에서 commander 패키지를 통해서 cli 를 구축 할 수 있다.

$ npm install commander
  • command
  • option
  • action
  • description

아래와 같이 옵션을 생성한다

# node-cli
const { Command } = require('commander');
const program = new Command();

program
	.command('test [slack api jira]')
    .option('-n, --name <name>', 'file name')
    .option('-c, --compress', 'compress')
    .parse();

console.log(program.opts().n);
console.log(program.opts().name);
console.log(program.opts().compress);
$ node node-cli test slack -n a.txt

default value

아래와 같이 default value 를 지정해줄 수 있다

const { Command } = require('commander');
const program = new Command();

program
    .option('-n, --name <name>', 'file name', 'default file name')
    .option('-c, --compress', 'compress', false)
    .parse();

console.log(program.opts().name);
console.log(program.opts().compress);

required option

아래와 같이 required option 을 지정해줄 수 있다

const { Command } = require('commander');
const program = new Command();

program
    .requiredOption('-n, --name <name>', 'file name')
    .option('-c, --compress', 'compress', false)
    .parse();

console.log(program.opts().name);
console.log(program.opts().compress);

description

const { Command } = require('commander');
const program = new Command();

program
	.command('test')
	.description('description about the command')

package version

$ node node-cli --version
> 1.0.0

위와 같이 version 정보를 출력하려면 아래와 같이 지정해주면 된다

const { Command } = require('commander');

const program = new Command();

program
    .version("1.0.0")
    .parse();
# package.json
{
	...
    "version": "1.0.0"
}

--version 을 통해서 package.json 에 존재하는 version 정보를 출력 할 수도 있다.

const { Command } = require('commander');
const packageJson = require('./package.json');

const program = new Command();

program
    .requiredOption('-n, --name <name>', 'file name')
    .option('-c, --compress', 'compress', false)
    .version(packageJson.version)
    .parse();

console.log(program.opts().name);
console.log(program.opts().compress);

[node-cli] https://kim-oriental.tistory.com/29

profile
개발 기록
post-custom-banner

0개의 댓글