틀림없이, 이전 처리는 내장 프로세스를 사용했지만, 작동 할 수는 있지만 작동하기는 쉽지 않기 때문에 마스터 TJ는 "내 신"을 썼는데, 이는 완전히 높은 엔드입니다.
1. 설치
코드 사본은 다음과 같습니다.
NPM 설치 사령관
2. 옵션 분석
사령관이있는 옵션은 .option () 메소드로 정의되며 옵션에 대한 문서로도 제공됩니다. 아래의 예는 Process.argv의 args 및 옵션을 파싱합니다.
코드 사본은 다음과 같습니다.
#!/usr/bin/env 노드
/**
* 모듈 종속성.
*/
var 프로그램 = 요구 사항 ( '사령관');
프로그램
.Version ( '0.0.1')
.Option ( '-p,-peppers', 'Peppers 추가')
.Option ( '-p,-파이애플', '파인애플 추가')
.Option ( '-B, ---BBQ', 'BBQ 소스 추가')
.option ( '-c, -cheese [type]', '지정된 치즈 유형을 추가 [대리석]', '대리석')
.parse (process.argv);
Console.log ( '당신은 다음과 같은 피자를 주문했습니다.';
if (program.peppers) console.log ( ' - Peppers');
if (program.pineapple) console.log ( ' - 파인애플');
if (program.bbq) console.log ( ' - bbq');
Console.log ( ' - %s Cheese', program.cheese);
짧은 플래그는 단일 arg로 전달 될 수 있습니다. 예를 들어 -ABC는 -a -b -c와 같습니다. "템플릿 엔진"과 같은 멀티 워드 옵션은 낙타 캐스트, Program.templateEngine 등입니다.
3. 도움말 정보를 자동으로 생성합니다
코드 사본은 다음과 같습니다.
$ ./examples/pizza-help
사용법 : 피자 [옵션]
옵션 :
-v, -version 출력 버전 번호
-p, -peppers는 고추를 추가합니다
-P, -파인애플 추가 파인애플
-B, -BBQ 추가 바베큐 소스
-c, -cheese <type> 지정된 치즈 유형을 추가 [대리석]
-h, -help 출력 사용 정보
물론 수동으로 생성 할 수도 있습니다.
코드 사본은 다음과 같습니다.
#!/usr/bin/env 노드
/**
* 모듈 종속성.
*/
var 프로그램 = 요구 사항 ( '../');
함수 목록 (val) {
return val.split ( ',').지도 (번호);
}
프로그램
.Version ( '0.0.1')
.option ( '-f,-foo', 'enable foo')
.Option ( '-B, --- 바', '일부 막대 활성화')
.option ( '-b, -baz', 'anable baz');
// 이후 .parse () 이전에 있어야합니다
// node의 emit ()는 즉각적입니다
program.on ( '-도움말', function () {
Console.log ( '예 :');
Console.log ( '');
console.log ( '$ custom-help-help');
console.log ( '$ custom -help -h');
Console.log ( '');
});
program.parse (process.argv);
Console.log ( 'Stuff');
4. 완전한 모범을 보이십시오
코드 사본은 다음과 같습니다.
함수 범위 (val) {
return val.split ( '..').지도 (번호);
}
함수 목록 (val) {
return val.split ( ',');
}
함수 수집 (val, 메모) {
Memo.push (Val);
리턴 메모;
}
함수 allokverbosity (v, Total) {
총액 + 1;
}
프로그램
.Version ( '0.0.1')
.usage ( '[옵션] <파일 ...>')
.option ( '-i, --integer <n>', '정수 인수', parseint)
.option ( '-f, --float <n>', 'float argument', parsefloat))
.option ( '-r,-범위 <a> .. <b>', '범위', 범위)
.Option ( '-L, --- list <Ifts>', '목록', 목록)
.option ( '-o,-optional [value]', '선택적 값'))
.option ( '-c,-collect [value]', '반복 가능한 값', collect, [])
.option ( '-v,-Verbose', '증가 할 수있는 값', allokverbosity, 0)
.parse (process.argv);
console.log ( 'int : %j', program.integer);
Console.log ( 'float : %j', program.float);
console.log ( '선택 사항 : %j', program.optional);
program.range = program.range || [];
console.log ( '범위 : %j .. %j', program.range [0], program.range [1]);
Console.log ( 'list : %j', program.list);
console.log ( 'collect : %j', program.collect);
Console.log ( 'Verbosity : %j', program.verbose);
console.log ( 'args : %j', program.args);