commander.js로 cli 도구 만들기

  • 간단한 cli 도구를 만들어보았다

TMI

cli.ts

cli.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env node
import { Command } from 'commander';
import { gto9 } from 'g-to-9';
import { version } from './package.json';

const program = new Command();

program.version(version);

program
.argument('<text>')
.description(
`replace all 'g' to '9'

Examples:
$ gto9 chinsung
$ gto9 gg is good game
$ gto9 'gg is good game'`
)
.action(() => {
const input = program.args.join(' ');
const result = gto9(input);
console.log(result);
});

program.parse();
  • #!/usr/bin/env node 최상단에 추가해줘야 한다

Windows Script Host
Microsoft JScript 컴파일 오류

  • 추가하지 않으면 만나는 오류이다

package.json

package.json
1
2
3
4
5
6
7
8
9
10
{
"name": "g-to-9-cli",
"version": "1.0.0",
"description": "g-to-9-cli",
"main": "cli.js",
"bin": {
"gto9": "cli.js"
}
// ...
}
  • package.json 에서 bin 필드에 값을 넣어주어 쉽게 cli 설정을 할 수 있다
  • 오브젝트를 넣어주거나 스트링을 넣어줄 수 있는데,
  • 스트링을 넣는 경우 "{cli path}" 형태로 한다. 이경우에는 프로젝트 이름으로 실행할 수 있다
  • 오브젝트의 경우 {"{command}" : "{cli path}"} 형태로 넣어준다. 이경우에는 프로젝트 이름과 다른 커맨드를 지정해 줄 수 있다
  • 참고 ; https://docs.npmjs.com/cli/v7/configuring-npm/package-json#bin

참고