I have a 웹 서버 쓴 node. js 저는 여러분께 런칭합니까 sys_memsize 특정 폴더. # 39 m, 어떻게 JavaScript 에서 인수만 액세스하려면 i& 확실하지 않다. # 39 m, i& 호스팅하면서 노드입니다 다음과 같습니다.
$ node server.js folder
here '는' 내 세르베리에스 서버 코드. 이것이 가능한 node. js 도움말에서는 밝혔습니다.
$ node -h
Usage: node [options] script.js [arguments]
내가 어떻게 그 인수만 액세스하면 JavaScript 에서? 내가 이 정보를 확인할 수 없었고 어떤 웹에서.
인수가 저장됩니까 프로세스콜라리프 ''
다음은 [노드입니다 문서 처리에 관한 명령행을 args:] (http://nodejs.org/docs/latest/api/process.html # process_process_argv)
>. 프로세스콜라리프 redboot*용 '' 배열입니다 명령줄이 인수만. # 39, & # 39, 첫 번째 요소는 적립율은 node& 두 번째 요소, JavaScript 의 파일 이름이 됩니다. 추가로 명령행을 인수만 다음 요소가 됩니다.
// print process.argv
process.argv.forEach(function (val, index, array) {
console.log(index + ': ' + val);
});
이것만으로도:
$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
How to use it 에서 바로 붽뎄 미니미스트 수행됨을 의 예를 들어보겠습니다.
var argv = require('minimist')(process.argv.slice(2));
console.dir(argv);
$ node example/parse.js -a beep -b boop
{ _: [], a: 'beep', b: 'boop' }
$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
{ _: [ 'foo', 'bar', 'baz' ],
x: 3,
y: 4,
n: 5,
a: true,
b: true,
c: true,
beep: 'boop' }
const args = process.argv;
console.log(args);
이 되돌려줍니다:
$ node server.js one two=three four
['node', '/home/server.js', 'one', 'two=three', 'four']
[공식 문서] (https://nodejs.org/docs/latest/api/process.html # process_process_argv)
[미니미스트] (https://github.com/substack/minimist) *: 최소 인수 구문 분석.
[코먼드리아스] (https://github.com/tj/commander.js) *: 대부분의 채택한 모듈에서는 인수를 위한 구문 분석.
[야옹] (https://github.com/sindresorhus/meow) *: 대신 가벼운 코먼드리아스
[야리스] (https://github.com/bcoe/yargs) *: 보다 정교한 인수 구문 분석 (heavy).
[버펄.j스] (https://github.com/dthree/vorpal) *: 인수를 통해 선진 / 인터랙티브 명령줄이 애플리케이션과도 구문 분석.
체크아웃하려고 [낙천가 라이브러리란] (https://github.com/substack/node-optimist), 구문 분석 명령줄 옵션을 직접 것이 훨씬 낫다.
낙관주의자들은 는 더 이상 사용되지 않습니다. [야리스] 시도하시겠습니까 (https://github.com/yargs/yargs) 의 적극적인 포크하지 원하는거요 낙천가.
하지만 여러 멋지구리해요 여기에 대답을 모든 매우 복잡한 것 같다. 이것은 매우 유사한 주장을 어떻게 배시 스크립트에 가치와 it& # 39 의 기본 제공되는 등 이미 액세스하면 node. js 모로고로 지적했다. (그냥 누가 이해할 수 있도록 that& # 39 의 새로운 node. js)
예:
$ node yourscript.js banana monkey
var program_name = process.argv[0]; //value will be "node"
var script_path = process.argv[1]; //value will be "yourscript.js"
var first_value = process.argv[2]; //value will be "banana"
var second_value = process.argv[3]; //value will be "monkey"
멋지구리해요 작동됨 정의하기 위한 다양한 선택, 작업 및 인수만. 또한 이 도움말에서는 생성하는지 페이징에 당신꺼에요.
사용자 입력을 가져오는 멋지구리해요 작동됨 같은 경우 콜백하는 외곽진입.
사용자 입력을 가져오는 멋지구리해요 작동됨 같은 경우 발생기입니다 외곽진입.
분석할 수 있는 가장 쉬운 방법은 명령줄이 인수만 노데지스 모듈에서는 stdio 을 사용하고 있습니다. 영감을 얻은 것으로, 이는 다음과 같이 가토프트 bsbab-unix '사소한' 유틸리티
var stdio = require('stdio');
var ops = stdio.getopt({
'check': {key: 'c', args: 2, description: 'What this option means'},
'map': {key: 'm', description: 'Another description'},
'kaka': {args: 1, mandatory: true},
'ooo': {key: 'o'}
});
이 명령으로 실행할 경우 이전 코드:
node <your_script.js> -c 23 45 --map -k 23 file1 file2
그럼 '작업' 객체에는 다음과 같이 됩니다.
{ check: [ '23', '45' ],
args: [ 'file1', 'file2' ],
map: true,
kaka: '23' }
정보기술 (it) 을 사용할 수 있도록 운영까지도. 예를 들면 다음과 같습니다.
if (ops.kaka && ops.check) {
console.log(ops.kaka + ops.check[0]);
}
대신 쓸 수 있도록 지원, 옵션도 그룹화됩니다 옴 '' -o - m '.'
또 ',' stdio / 사용 출력입니다 도움말에서는 자동으로 생성할 수 있습니다. # 39 () ',' ll get you& 롭스.프린셀프 전화하시기 경우 다음과 같다.
USAGE: node something.js [--check <ARG1> <ARG2>] [--kaka] [--ooo] [--map]
-c, --check <ARG1> <ARG2> What this option means (mandatory)
-k, --kaka (mandatory)
--map Another description
-o, --ooo
또한 이전 메시지를 표시됨을 필수 옵션 지정되지 않은 경우 (다음에 오류 메시지) 미디어인지 미스피치피들 (예를 들어, 하나의 arg 대체하십시오 옵션의 및 it 요구사항뿐 2).
Stdio 모듈에서는 설치할 수 있습니다 사용하여 고궁박물원:
npm install stdio
이 경우 스크립트입니다 호출됨 미스크리프t.j스 및 성명, & # 39, 숀 Worthington& 전달할 인수로 # 39, 등, (아래 참조).
node myScript.js Sean Worthington
그럼 내 스크립트입니다 쓸 수 있습니다.
var firstName = process.argv[2]; // Will be set to 'Sean'
var lastName = process.argv[3]; // Will be set to 'Worthington'
"'js 그레타르크스 함수 () { const args = {}; 프로세스콜라리프 이슬리스 (2, 프로세스콜라리버트렌크스) 스포리치 (arg = >. { 긴 arg // if (아르g.슬리스 (0.2) = & # 39, & # 39 -;) { const 롱가르크 아르g. 스프리트 (& # 39, & # 39 =;), = const 롱가지 플래그 = 롱가르크 [0] 이슬리스 (2, 롱가르크 [0] 트렌크스); const 롱가리발루 = 롱가고드레래스 >. 1? 롱가르크 [1]: 참. [롱가지 플래그] args = 롱가리발루. } 플래그 // else if (& # 39, & # 39 arg [0] = -;) { const 플래그 = 아르g.슬리스 오스플리트 (& # 39, & # 39;) (1, 아르고드레래스). 플라그스윈포리치 (플래깅 = >. { [플래깅] args = true. }). } }). 반품하십시오 args. } const args = 그레타르크스 (); 콘솔드로그 (args); "'
입력
"'sh d - name = 누구없어요 테스t.j스 노드입니다 "'
출력입니다
"'js {D: 참, 이름: # 39, & # 39 Hello&. } "'
입력
"'sh
출력입니다 "'js { l: 참, H: 참, R: 참, s: 참, ip: # 39, & # 39 127.0.0.1&;; 포트: # 39, & # 39 8080&;; env: # 39, & # 39 dev&. } "'
[명령행을 args] (https://github.com/75lb/command-line-args/) 는 가치가 저기봐요!
주요 표기법을 사용하여 표준 옵션을 설정할 수 있습니다 ([자세한 내용] (https://github.com/75lb/command-line-args/wiki/Notation-rules)). 이 명령은 avamer 모두 동일한 값을 설정합니다.
$ example --verbose --timeout=1000 --src one.js --src two.js
$ example --verbose --timeout 1000 --src one.js two.js
$ example -vt 1000 --src one.js two.js
$ example -vt 1000 one.js two.js
먼저 값뿐만 액세스하려면 목록을 만들어 [옵션 redefinitions] (https://github.com/75lb/command-line-args/blob/master/doc/option-definition.md) 옵션을 설명하는 응용 프로그램을 사용할 수 있습니다. ['유형'] (https://github.com/75lb/command-line-args/blob/master/doc/option-definition.md # 오티온티페 함수) 이 속성은 세터 함수 () 는 이 제품을 통해 전달된 값을) 값을 수신되었습니다 완전히 제어할 수 있게 합니다.
const optionDefinitions = [
{ name: 'verbose', alias: 'v', type: Boolean },
{ name: 'src', type: String, multiple: true, defaultOption: true },
{ name: 'timeout', alias: 't', type: Number }
]
[코먼드리네이리스 ()] 이 옵션을 사용하는 다음, 구문 분석 (https://github.com/75lb/command-line-args/blob/master/doc/API.md # 옵션 객체에는 코먼드리네라그스포티오네피니티언스):
const commandLineArgs = require('command-line-args')
const options = commandLineArgs(optionDefinitions)
'옵션' 지금 다음과 같습니다.
{
src: [
'one.js',
'two.js'
],
verbose: true,
timeout: 1000
}
일반적인 사용, 더 이상 선택취소합니다 수락하려면 명령행을 args 구성할 수 있는 고급 구문을 말한다.
[명령 기반 구문] (https://github.com/75lb/command-line-args/wiki/implement-command-parsing- (깃 (git) 스타일)) (git 스타일) 을 형식:
$ executable <command> [options]
예를 들어.
$ git commit --squash -m "This is my commit message"
[명령 및 하위 명령 구문을] (https://github.com/75lb/command-line-args/wiki/Implement-multiple-command-parsing- (부두 노동자 스타일)) (부두노동자 스타일) 을 형식:
$ executable <command> [options] <sub-command> [options]
예를 들어.
$ docker run --detached --image centos bash -c yum install -y httpd
사용 설명서 (일반적으로 '때' 도움말에서는 인쇄했습니다 설정되었습니다) [명령행을 사용] 통해 생성할 수 있습니다 (https://github.com/75lb/command-line-usage). 아래 예제는 지켜보리니 [설명서를 읽기] (https://github.com/75lb/command-line-usage) 자세한 내용은 작성하는방법에 저들이요
안내선 일반적인 사용 예.
[현세생] (https://raw.githubusercontent.com/75lb/command-line-usage/master/example/screens/footer.png)!
이 [폴리머 cli] (https://github.com/Polymer/polymer-cli/) 는 실제 사용 안내선 좋은 예.
[현세생] (https://raw.githubusercontent.com/75lb/command-line-usage/master/example/screens/polymer.png)!
더 많이 배울 수 있다 [wiki] (https://github.com/75lb/command-line-args/wiki) 의 예제 및 문서를 참조하십시오.
야리스 즐거운 수준들과 준활성 있다, 그 중 하나입니다 문서를 읽을 수 있습니다.
예를 들어, s # 39 에서 here& 깃허브 / 고궁박물원 페이지:
#!/usr/bin/env node
var argv = require('yargs').argv;
console.log('(%d,%d)', argv.x, argv.y);
console.log(argv._);
여기 출력입니다 (이 경우 옵션 등을 짧고 긴 대시, 숫자 등).
$ ./nonopt.js -x 6.82 -y 3.35 rum
(6.82,3.35)
[ 'rum' ]
$ ./nonopt.js "me hearties" -x 0.54 yo -y 1.12 ho
(0.54,1.12)
[ 'me hearties', 'yo', 'ho' ]
const args = process.argv
.slice(2)
.map(arg => arg.split('='))
.reduce((args, [value, key]) => {
args[value] = key;
return args;
}, {});
console.log(args.foo)
console.log(args.fizz)
예:
$ node test.js foo=bar fizz=buzz
bar
buzz
참고: 이 때 자연스럽게 '=' 인수를 페일오버됩니다 포함되어 있습니다. 이것은 아주 단순해졌습니다 대해서만 사용.
const args = process.argv.slice(2).reduce((acc, arg) => {
let [k, v = true] = arg.split('=')
acc[k] = v
return acc
}, {})
이 명령에 대해 "'노드입니다 이네스트제스 카운트입니다 디버그로 거짓값 메시지 = = = 2 인쇄하십시오 아아아안녀어엉"'
console.log(args) // { count: '2', print: true, debug: 'false', msg: 'hi' }
또한 변경할 수 있습니다
let [k, v = true] = arg.split('=')
acc[k] = v
승인자 (훨씬 더)
let [k, v] = arg.split('=')
acc[k] = v === undefined ? true : /true|false/.test(v) ? v === 'true' : /[\d|\.]+/.test(v) ? Number(v) : v
자동 구문 분석 부울입니다 &. 번호
console.log(args) // { count: 2, print: true, debug: false, msg: 'hi' }
반군지역, 파싱 인수만 쉬운 과정이다. 노드입니다 이용하면 프로세스콜라리프 속성, 즉 문장열 배열입니다 있는 인수만 때 사용했던 노드입니다 호출되었을 있었다. 첫 번째 엔트리입니다 노드입니다 실행가능파일, 두 번째 배열) 는 항목인지 이름을 스크립트입니다.
실행하십시오 아구멘츠 스크립트입니다 아래에 있는 경우
$ node args.js arg1 arg2
파일: 아리스자이스
console.log(process.argv)
같은 어레이입니다 경험할 수 있습니다.
['node','args.js','arg1','arg2']
npm install ps-grab
node greeting.js --user Abdennour --website http://abdennoor.com
var grab=require('ps-grab');
grab('--username') // return 'Abdennour'
grab('--action') // return 'http://abdennoor.com'
_ 또는 다음과 같은 항목을
node vbox.js -OS redhat -VM template-12332 ;
var grab=require('ps-grab');
grab('-OS') // return 'redhat'
grab('-VM') // return 'template-12332'
for(var i=0;i<process.argv.length;i++){
console.log(process.argv[i]);
}
nodemon app.js "arg1" "arg2" "arg3"
0 'C:\\Program Files\\nodejs\\node.exe'
1 'C:\\Users\\Nouman\\Desktop\\Node\\camer nodejs\\proj.js'
2 'arg1' your first argument you passed.
3 'arg2' your second argument you passed.
4 'arg3' your third argument you passed.
'0'. 이 디렉터리이고 노드그렉세 in your 마칭 (C:\Program Files\nodejs\node.exe& # 39;)
'1'. 프로젝트의 디렉토리에는 절실해졌습니다. (proj.j스)
'2'. 당신의 첫 인수는 노드 (arg1)
'3': 두 번째 인수를 노드 (arg2)
'4': 3 번째 인수를 노드 (arg3)
실제 인수, 즉 'argv' 양식 '시작' 2 '색인입니다 어레이입니다 프로세스콜라리프 [2]'.
'' 시스템지아리스 사용하여 명령줄이 인수만 도달할 수 있습니다. 저는 그래서 구문 분석 솔루션을 사용하여 아래 인수만 를 객체에는 어느쪽이야 난 로렌아줌마가 이름으로 얻을 수 있다.
var system = require('system');
var args = {};
system.args.map(function(x){return x.split("=")})
.map(function(y){args[y[0]]=y[1]});
이제 don& # 39, t 알아야 색인입니다 논증. 'like' 아리스트웨테베르 사용한다.
>. 참고: y = x = 1 '2' 라는 같은 콩지름에 인수만 file.j스 사용할 수 >. 이 솔루션은.
존재하는 모든 인수 및 확인란 파싱할 수 있습니다.
파일: parse-cli-arguments.js:
module.exports = function(requiredArguments){
var arguments = {};
for (var index = 0; index < process.argv.length; index++) {
var re = new RegExp('--([A-Za-z0-9_]+)=([A/-Za-z0-9_]+)'),
matches = re.exec(process.argv[index]);
if(matches !== null) {
arguments[matches[1]] = matches[2];
}
}
for (var index = 0; index < requiredArguments.length; index++) {
if (arguments[requiredArguments[index]] === undefined) {
throw(requiredArguments[index] + ' not defined. Please add the argument with --' + requiredArguments[index]);
}
}
return arguments;
}
Just do 보다.
var arguments = require('./parse-cli-arguments')(['foo', 'bar', 'xpto']);