ぽっちぽちにしてやんよ

技術ネタとかアプリに関する話とか

commander.js で配列形式のオプションを受け取る方法

tj/commander.js: node.js command-line interfaces made easy というNode.jsでCLIのコマンドを作るときに便利なモジュールがあるのですが,毎回複数の値を配列で受け取りたいときの書き方を忘れるのでメモしておく.

const commander = require('commander');

commander
  .version('0.0.1')
  // --id XXX --id YYY の形式をサポート
  .option(
    '--id [String]',
    'Target IDs',
    (val, ret) => {
      ret = ret || [];
      ret.push(val);
      return ret;
    }
  )
  .parse(process.argv);

console.log(commander.id);
process.exit(1);
$ node command/util/wms/daiwa/sync_daiwa_stocks.js --id hoge 
[ 'hoge' ]

$ node command/util/wms/daiwa/sync_daiwa_stocks.js               
undefined

$ node command/util/wms/daiwa/sync_daiwa_stocks.js --id hoge --id fuga
[ 'hoge', 'fuga' ]