node.js 유용한 모듈 (2) - optimist
원문 링크 - http://www.catonmat.net/blog/nodejs-modules-optimist/
이번에는 간결한 옵션 파서 라이브러리인 node-optimist를 소개할 것이다. 이 라이브러리는 Browserling and Testling의 공동설립자인 James Halliday (SubStack)에 의해 작성됐다.
얼마나 간결한 옵션 파서인지 궁금하지 않은가? 다음을 살펴보자.
var argv = require('optimist').argv;
이게 끝이다. 모든 옵션들은 파싱되어 argv
에 저장된다.
이제 다양한 유스케이스들에 대해 살펴보자. 우선, 이 모듈은 긴 인자 파싱을 지원한다.
#!/usr/bin/env node
var argv = require('optimist').argv;
if (argv.rif - 5 * argv.xup > 7.138) {
console.log('Buy more riffiwobbles');
}
else {
console.log('Sell the xupptumblers');
}
지금 위의 스크립트를 --rif
와 --xup
인자와 함께 실행하면 다음과 같은 결과를 얻을 수 있다.
$ ./xup.js --rif=55 --xup=9.52 Buy more riffiwobbles $ ./xup.js --rif 12 --xup 8.1 Sell the xupptumblers
다음으로 그것은 짧은 인자들을 지원한다:
#!/usr/bin/env node
var argv = require('optimist').argv;
console.log('(%d,%d)', argv.x, argv.y);
여기서 -x
와 -y
와 같은 짧은 인자를 사용할 수 있다.
$ ./short.js -x 10 -y 21 (10,21)
node-optimist 모듈은 또한 불린 인자를 지원한다.
#!/usr/bin/env node
var argv = require('optimist').argv;
if (argv.s) {
console.log(argv.fr ? 'Le chat dit: ' : 'The cat says: ');
}
console.log(
(argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')
);
이제 다음과 같이 다양한 옵션을 가진 스크립트를 실행할 수 있다.
$ ./bool.js -s The cat says: meow $ ./bool.js -sp The cat says: meow. $ ./bool.js -sp --fr Le chat dit: miaou.
다음은, -(하이픈)으로 시작되지 않은 옵션을 argv._
를 통해 처리하는 예제다.
#!/usr/bin/env node
var argv = require('optimist').argv;
console.log('(%d,%d)', argv.x, argv.y);
console.log(argv._);
이제 하이픈 없는 옵션을 입력해서 동작을 살펴보자 :
$ ./nonopt.js -x 6.82 -y 3.35 moo (6.82,3.35) [ 'moo' ] $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz (0.54,1.12) [ 'foo', 'bar', 'baz' ]
Optimist는 또는 .usage()
와 .demand()
함수들를 제공한다.
#!/usr/bin/env node
var argv = require('optimist')
.usage('Usage: $0 -x [num] -y [num]')
.demand(['x','y'])
.argv;
console.log(argv.x / argv.y);
위 예제는 인자 x
와 y
를 필요로 한다. 만약 그것이 넘겨지지 않는다면, 다음과 같이 사용법이 자동으로 출력될 것이다.
$ ./divide.js -x 55 -y 11 5 $ node ./divide.js -x 4.91 -z 2.51 Usage: node ./divide.js -x [num] -y [num] Options: -x [required] -y [required] Missing required arguments: y
Optimist는 .default()
를 통해 디폴트 인자를 사용할 수 있다.
#!/usr/bin/env node
var argv = require('optimist')
.default('x', 10)
.default('y', 10)
.argv
;
console.log(argv.x + argv.y);
위 예제는 x
and y
의 디폴트 값을 10으로 설정한 것이다.
$ ./default_singles.js -x 5 15
이밖에도 여러분은 isaacs의 nopt를 사용해서 인자의 데이터 타입을 강제하거나 여러 인자들을 쉽게 다룰 수 있다. 또는 nomnom를 사용해서 인자들을 축약하거나 해시 형태로 사용할 수 있다.
[역자주 - 아래는 원저자의 요청에 따라 원문 그대로 실습니다. 관심있으신 분들은 해당 원저자의 블로그나 트위터를 팔로우 하시기 바랍니다.]
If you love these articles, subscribe to my blog for more, follow me on Twitter to find about my adventures, and watch me produce code on GitHub!