[Node.js] コマンド引数パーサーの比較
2014年9月27日
いわゆる getopts、argparse 的なことをしてくれる以下のモジュールたちをざっと使ってみて:
commander
nopt
nomnom
minimist
比較というか、雑な感想を述べてみます。
commander
– help のドキュメントを自動生成してくれる
– サブコマンドの設定ができる
- 中で子プロセスで起動するようになっている
- original_command-sub_command.js のファイル名で別に設置する必要がある
- ぶっちゃけ、余計なお世話としか思えない
– 設定は commander のモジュールに対して行うので、副作用がある
- それどころか展開した結果も何故かモジュール以下に展開する。ウワァァン、キモイヨー!
– 要件がシンプルなら便利
– サブコマンドの設定ができる
- 中で子プロセスで起動するようになっている
- original_command-sub_command.js のファイル名で別に設置する必要がある
- ぶっちゃけ、余計なお世話としか思えない
– 設定は commander のモジュールに対して行うので、副作用がある
- それどころか展開した結果も何故かモジュール以下に展開する。ウワァァン、キモイヨー!
– 要件がシンプルなら便利
追記、ブコメから:
– teppeis さん「commanderはnew Commandすればグローバルではなくインスタンスに設定できるので副作用無いですよ」
nopt
– 複雑なオプション設定に対応できる
- 特定書式で値を解釈し、Array や Date として展開できたり
- 同じオプションを複数回指定して配列で取得したり
– しかし、デフォルト値の設定ができないっぽい?
– 不要に複雑でオレオレな感じがあるので、自分は好きじゃない
- 特定書式で値を解釈し、Array や Date として展開できたり
- 同じオプションを複数回指定して配列で取得したり
– しかし、デフォルト値の設定ができないっぽい?
– 不要に複雑でオレオレな感じがあるので、自分は好きじゃない
nomnom
– サブコマンドの設定ができる、commander より素直で断然良い
– モジュールに対して副作用がある
– commander に近い、そしてそれより良さそうな気がする
– 他の 3 者と比べると、全然マイナー
– モジュールに対して副作用がある
– commander に近い、そしてそれより良さそうな気がする
– 他の 3 者と比べると、全然マイナー
minimist
– 疎結合で単機能、引数/オプションの解析だけを行ってくれる
– ショートハンドへの別名設定、デフォルト値の設定、-- の設定、など基本的な点は抑えてくれている
– getopts の強化が欲しいなら、これが最も良いと思う
– 一番好き
– 検証コード
– ショートハンドへの別名設定、デフォルト値の設定、-- の設定、など基本的な点は抑えてくれている
– getopts の強化が欲しいなら、これが最も良いと思う
– 一番好き
– 検証コード
オマケ: optimist
もう非推奨なので、minimist を使ってくださいとのこと