CLI向けライブラリ
いくつかある。
https://github.com/substack/minimist
https://github.com/tj/commander.js/
https://github.com/cacjs/cac
commander.jsがスター数が一番多いのでこれにする(開発も継続されている模様)
npm i commander -D
commander.jsの使い方
基本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import * as commander from "commander" /** * USAGE: node devtools/test.js */ commander .version( "0.0.1" , "-v, --version" ) .option( "-t, --test" , "test option" ) .parse(process.argv) if (commander.test) { console.log( "add test option" ) } console.log( "Hello CLI" ) |
上記で
node devtools/test.js
で"Hello CLI"と出力。node devtools/test.js -v
でバージョン情報。node devtools/test.js -h
でヘルプが表示される。.option...で任意の引数を追加できる。
第1引数にオプションの識別名をカンマ区切りで指定。
第2引数がヘルプを表示した時に出力される。
node devtools/test.js -t
を実行するとadd test option
Hello CLI
と表示される。Hello CLI
入力を受け付ける(対話型インタフェース)
readline-sync を使用すると対話型のインタフェースが作れるようだ。
https://github.com/anseki/readline-sync
npm i readline-sync -D
1 2 3 4 5 6 7 8 9 10 11 12 13 | import * as commander from "commander" import * as readlineSync from "readline-sync" /** * USAGE: node devtools/test.js */ commander .version( "0.0.1" , "-v, --version" ) .parse(process.argv) const input = readlineSync.prompt() console.log( "Hello " + input) |
readlineSync.prompt() で入力待ち。
コンソールの文字に色を付ける
charkを使用する。
https://github.com/chalk/chalk
1 2 3 4 5 6 7 8 9 10 11 12 | import chalk from "chalk" import * as commander from "commander" /** * USAGE: node devtools/test.js */ commander .version( "0.0.1" , "-v, --version" ) .parse(process.argv) console.log(chalk.blue( "Hello CLI" )) |
chalk.xxxx("文字列")で指定した色で表示される。背景の色も変更可能。
以上で大体のことはできるはず。
参考
https://qiita.com/tom-u/items/34cf26fa4fa129f93095
https://qiita.com/0x50/items/723d2d15592aa5a81763
https://wp-kyoto.net/try-commander-to-make-npm-cli-tools