2016-11-08 3 views
1

참고 :이 최상위 스크립트에 인수를 보내기에 대해 아니지만,이 소요 스크립트를 호출 할 때 호출 스크립트로 스크립트 그게 내 package.json에서중첩 된 스크립트에 명령 줄 인수를 전달하는 방법은 무엇입니까?

는 명령 줄을 직접 인수 , 작동합니다. 하지만 다른 스크립트를 호출하는 스크립트를 호출하면 명령 행 인수를 전달하지 않습니다. 어떻게 그들을 전달합니까?

npm run takes-args -- -env dev 

을하지만 다른 스크립트를 통해 그것을 실행하면 인수를 얻을 수 없습니다 :

{ 
    ... 
    "takes-args": "somemodule", 
    "calls-takes-args": "npm run takes-args" 
} 

내가 아래의 명령을 실행하면 인수 통해 제공됩니다. 그들을 추월 할 수있는 방법이 있습니까? 어쩌면 달러 기호와 같은 변수 마커로?

//The top-level script gets the args, BUT takes-args does NOT 
npm run calls-takes-args -- -env dev 

어떤 방법이 있습니까?

+0

@adeneo 이것은 중복되지 않습니다. 이것은 args를 최상위 스크립트에만 전달하기위한 것입니다. –

+0

정확히, 최상위 스크립트가 그 값을 다음 값으로 전달해야합니다. args를 전달하는 마법은 없습니다. 직접해야합니다. 속임수를 제거하고 다른 사람이이 일을하는 다른 방법을 알고 있는지 알아 봅니다. – adeneo

+0

[Node.js에 명령 줄 인수를 전달하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/4351521/how-do-i-pass-command-line-arguments-to-node-js)) – adeneo

답변

3

귀하의 scripts 필드는 다음과 같이한다 :

{ 
    ... 
    "takes-args": "somemodule", 
    "calls-takes-args": "npm run takes-args --" 
} 

공지 사항 calls-takes-args의 끝에 --.

-- 뒤에 전달한 내용은 실행중인 스크립트에 직접 추가됩니다. npm run calls-takes-args -- -env dev을 실행하면 npm run takes-args -env dev을 실행하는 것과 같습니다. 물론, 그것은 작동하지 않습니다.

추가하면 calls-takes-args--, 당신은 npm run calls-takes-args -- -env dev, npm run 실행 npm run takes-args -- -env dev을 실행할 때. 성공!

calls-takes-args에 인수를 전달하지 않으면 후행 --이 아프지 않습니다.


편집 : 수정하지 않으려는 없습니다/경우 somemodule -env dev를 실행합니다

npm run calls-takes-args -- -- -env dev 

당신의 package.json, 당신은 실행할 수 있습니다.

+0

내 게시물을 잘못 읽었습니다. :) 커맨드 라인에서 실행 중입니다 :'npm run calls-takes-args - -env dev'. "calls-takes-args"는 단순히 ""npm run takes-args "'를 수행하는 package.json에 정의 된 스크립트입니다. *** 명령 줄 ***에서 "-env dev"를 스크립트에 전달하려고합니다. * it * is * calling *. –

+0

@DonRhummy 나는 내 대답을 잘못 읽었다 고 생각합니다. 스크립트 섹션을 위에서 설명한대로 편집하면 명령 행에서'calls-takes-args'를 통해'takes-args'로 매개 변수를 전달할 수 있어야합니다. – RyanZim

+0

@DonRhummy 좋아, 이제는 이해할 것 같아. 나는 나의 대답을 편집했다. – RyanZim

관련 문제