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の使い方
基本
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
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
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