投稿者 tel | 2013年8月7日

Node.jsのquerystringでコマンドラインオプションをパースしてみる

querystringモジュールは本来urlのクエリ文字列を処理するものだけど、コマンドラインオプションにも使えそうな気がしたので試してみた。

var q = require('querystring');
var option = q.parse(process.argv.slice(2).join(' '), ' ');
console.log(option);

上記のようなコードを書いて、argv_parse.jsとして保存。コマンドラインオプションをつけて実行してみる。

>node argv_parse.js

引数なしだと空のオブジェクトが返ってくる。
{}

>node argv_parse.js -a=100 -b=aaa -c

引数を何個かつけるとオブジェクトのプロパティとなって返ってくる。
{ '-a': '100', '-b': 'aaa', '-c': '' }

>node argv_parse.js -a="1 2 3 4"

スペースが入っている文字列だとスペースで分割されてしまってダメ。
{ '2': '', '3': '', '4': '', '-a': '1' }

問題点

  • -a とかつけた場合、オプションを取得するのに option[‘-b’] とか書くのが冗長。
    option.b みたいな風にとってきたい。
  • スペースが入ってる文字列が扱えない。
  • = なしの場合、空文字列になっているので if(option[‘-a’]) みたいにすると false になってしまう。

まとめ

コマンドラインオプションを扱えるモジュールを npm でインストールしたほうがよさそう。
ただ標準のライブラリだけで処理できるのは便利かもしれない。

Node.js v0.10.15 マニュアル & ドキュメンテーション Query String
http://nodejs.jp/nodejs.org_ja/docs/v0.10/api/querystring.html#querystring_querystring_parse_str_sep_eq_options


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。