본문 바로가기
Node

Node] process.argv 파싱을 위한 nopt package

by Fastlane 2020. 11. 16.
728x90
반응형

Node.js는 command line으로부터 arguments를 전달받는다. 

Node.js application을 호출 시, 갯수에 상관없이 arguments를 전달할 수 있다. 

Argument는 하나 또는 key value이다. 

node app.js joe

또는

node app.js name=joe

전달된 argument는 process object의 argv property 배열로 저장되어 찾을 수 있다. 

argv(short for 'argument values')

 

process.argv의 첫번째 element는 node command의 full path이고, 두 번째 element는 실행된 파일의 full path이다. 

모든 추가 arguments는 세 번째부터 온다. 

 

추가 arguments만 얻으려면 처음 2 params을 제외시킨다. 

const args = process.argv.slice(2)

 

만약에 아래와 같이 index name없이 하나의 argument만 있는 경우 :

node app.js joe

아래와 같이 접근할 수 있다. 

const args = process.argv.slice(2)
args[0]

 

다음과 같은 경우 : 

node app.js name=joe

args[0] 는 name=joe 이다. 파싱이 필요하면 minimist library를 사용할 수 있다. 

const args = require('minimist')(process.argv.slice(2))
args['name'] //joe

이 경우 모든 argument name 앞에 double dashes를 사용해야 한다. 

node app.js --name=joe

 

nopt : option parter

github.com/npm/nopt/blob/master/README.md

 

npm/nopt

Node/npm Option Parsing. Contribute to npm/nopt development by creating an account on GitHub.

github.com

 

nodeArgs.js

const nopt = require('nopt');
const knownOpts = {
   "prodKey": [String] 
}
const nodeArgs = nopt(knownOpts, null, process.argv);
process.nodeArgs = nodeArgs;
module.exports = {};

 

app.js

require('./nodeArgs');
let key = process.nodeArgs.prodKey;
console.log(key); 

위와 같이 ArgsParser를 만들어 놓고, 다음과 같이 호출하여 사용 가능하다. 

node app.js --prodKey 12345!!!

 

728x90
반응형

댓글