node.jsでコマンドライン引数の処理を行うなら「argv」が便利
複雑なオプションが指定された引数なども、とても簡単に取得できるので便利です。
インストールはnpmで
1 |
$ npm install argv |
argvオブジェクトを作成してrunメソッドを実行すると、引数をオブジェクトとして取得することができます。
1 2 |
var argv = require('argv'); console.log(argv.run()); |
1 2 |
$ node sample.js test aaa { targets: [ 'test', 'aaa' ], options: {} } |
オプションが指定された引数を取得したい場合は、optionメソッドで取得するオプションの設定をします。
1 2 3 4 5 6 7 8 9 10 |
var argv = require('argv'); argv.option({ name: 'option', short: 'o', type : 'string', description :'あなたのスクリプトのオプションを定義します', example: "'script --option=value' or 'script -o value'" }); console.log(argv.run()); |
1 2 |
$ node sample test -o aaa { targets: [ 'test' ], options: { option: 'aaa' } } |
ヘルプも自動的に作成されます
1 2 3 4 5 6 7 8 9 10 |
$ node sample -h Usage: sample [options] --help, -h Displays help information about this script 'sample -h' or 'sample --help' --option, -o あなたのスクリプトのオプションを定義します 'script --option=value' or 'script -o value' |
オプションの値には型を指定することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var argv = require('argv'); argv.option([ { name: 'option', type: 'csv,int' }, { name: 'path', short: 'p', type: 'list,path' } ]); console.log(argv.run()); |
1 2 3 4 5 |
$ node sample test --option=123,456.001,789.01 { targets: [ 'test' ], options: { option: [ 123, 456, 789 ] } } $ node sample test -p /path/to/file1 -p /path/to/file2 { targets: [ 'test' ], options: { path: [ '/path/to/file1', '/path/to/file2' ] } } |
独自の型を作成することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var argv = require('argv'); argv.type( 'squared', function( value ) { //squared型を定義 value = parseFloat( value ); return value * value; }); argv.option({ name: 'square', short: 's', type: 'squared' }); console.log(argv.run()); |
上記で作成したsquared型は、–square or -s オプションで指定された引数の2乗された値を返します。
1 2 |
$ node sample test -s 2 { targets: [ 'test' ], options: { square: 4 } } |