旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[Node.js] コマンド引数パーサーの比較

2014年9月27日

いわゆる getopts、argparse 的なことをしてくれる以下のモジュールたちをざっと使ってみて:

commander
nopt
nomnom
minimist

比較というか、雑な感想を述べてみます。

commander

– help のドキュメントを自動生成してくれる
– サブコマンドの設定ができる
 - 中で子プロセスで起動するようになっている
 - original_command-sub_command.js のファイル名で別に設置する必要がある
  - ぶっちゃけ、余計なお世話としか思えない
– 設定は commander のモジュールに対して行うので、副作用がある
 - それどころか展開した結果も何故かモジュール以下に展開する。ウワァァン、キモイヨー!
– 要件がシンプルなら便利

追記、ブコメから:

– teppeis さん「commanderはnew Commandすればグローバルではなくインスタンスに設定できるので副作用無いですよ」

nopt

– 複雑なオプション設定に対応できる
 - 特定書式で値を解釈し、Array や Date として展開できたり
 - 同じオプションを複数回指定して配列で取得したり
– しかし、デフォルト値の設定ができないっぽい?
– 不要に複雑でオレオレな感じがあるので、自分は好きじゃない

nomnom

– サブコマンドの設定ができる、commander より素直で断然良い
– モジュールに対して副作用がある
– commander に近い、そしてそれより良さそうな気がする
– 他の 3 者と比べると、全然マイナー

minimist

– 疎結合で単機能、引数/オプションの解析だけを行ってくれる
– ショートハンドへの別名設定、デフォルト値の設定、-- の設定、など基本的な点は抑えてくれている
– getopts の強化が欲しいなら、これが最も良いと思う
– 一番好き
検証コード

オマケ: optimist

もう非推奨なので、minimist を使ってくださいとのこと