nodeをコマンドラインから実行する時に引数を渡したい場合にはprocess.argv
を使えば良い。例えばnode test.js hoge
と実行するとprocess.argv[2]
でhogeを取得することができる。
しかし、この方法だとコマンドラインからもソースコードからも引数の意味を理解することが難しくなり、将来的にメンテナンスが難しくなってしまう。ということで何か良いモジュールが無いかと探していたところ、yargvが良さそうだったので使ってみた。
npm install yargs --save
とかしてインストールしてrequire('yargs')
をソースコード内に書いてやれば様々な形式の引数が簡単に使えるようになる。コードを見た方が理解が早いと思うので、コードと実行結果を載せておきます。
const yargv = require('yargs').argv;
console.log("process.argv[2]:" + process.argv[2]);
console.log("yargv.option:" + yargv.option);
console.log("yargv.x:" + yargv.x);
console.log("yargv.production:" + yargv.production);
console.log("yargv.s:" + yargv.s);
console.log("yargv.i:" + yargv.i);
console.log("yargv.j:" + yargv.j);
コードを実行すると下記のように出力される
$ node test.js --option=nodebug -x=10 --production -s -ij
process.argv[2]:--option=nodebug
yargv.option:nodebug
yargv.x:10
yargv.production:true
yargv.s:true
yargv.i:true
yargv.j:true
より詳しくはgithubにexampleが多く載っているのでそちらを参考に
https://github.com/yargs/yargs/blob/master/docs/examples.md