node.js で コマンドライン引数を取るには

node.js でコマンドライン引数を取りたい場合は opts というモジュールを使うことで簡単に実現出来ます。

optsモジュールは npm でインストールします。

npm install opts

試しに引数で指定したポート番号でHTTPサーバを立ち上げるコードを書いてみました。

var http = require('http')
  , opts = require('opts');
 
opts.parse([
    {
        'short': 'p',
        'long': 'port',
        'description': 'HTTP port',
        'value': true,
        'required': false
    },
]);
 
var port = opts.get('port') || 3000
 
server = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<h1>Hello World!</h1>');
    res.end();
});
 
server.listen(port);

実行。

node app.js -p 3001

requiredをtrueにして引数を省略して起動するとちゃんとエラーになります。

$ node app.js 
Missing required option: p
 
Usage: node /path/app.js [options]
HTTP port
    -p, --port <value> (required)