Commander.jsを使ってみたよ

この前はoptimistを使ってみたんですが、TJ作のCommander.jsってのもあったのでそれも使ってみることに。
環境:Windows XP SP3 / node 0.6.14 / npm 1.1.12

インストール

> npm install commander

試してみる

#!/usr/bin/env node
// aaa.js
var app = require('commander');

app
  .version('0.0.1')
  .option('-s, --sugoi', 'sugoi option')
  ;

app
  .command('bbb')
  .description('bbb command')
  .option('-q, --qqqqq', 'qqqqq')
  .option('-u', 'u')
  .action(function (args) {
    console.log(args.qqqqq);
    console.log(args.U);
  })
  ;

app.parse(process.argv);

メソッドチェーンが気持ち良い感じ。
こんな感じで書いてあげると次みたいな結果になります。

> node aaa.js --help

  Usage: aaa.js [options] [command]

  Commands:

    bbb [options] 
    bbb command

  Options:

    -h, --help     output usage information
    -V, --version  output the version number
    -s, --sugoi    sugoi option

> node aaa.js --version
0.0.1
> node aaa.js bbb
undefined
undefined
> node aaa.js bbb --help

  Usage: bbb [options]

  Options:

    -h, --help   output usage information
    -q, --qqqqq  qqqqq
    -u           u

> node aaa.js bbb -q
true
undefined
> node aaa.js bbb -qu
true
true

-h,--helpと-V,--versionは勝手に追加してくれたり、ラクチン。
actionで受け取るパラメータに気を付ければ、とても便利なライブラリ。