2017-11-29 1 views
3

응용 프로그램에서 일부 결과를 얻으려면 3pm 스크립트를 실행해야하는 시나리오가 있습니다. 나는 그들을 하나의 npm 스크립트에 결합시켰다. 이것은 내 package.json입니다 :npm 스크립트 명령 줄 인수를 특정 스크립트에 전달하십시오.

"scripts": { 
    "setup": "npm install && npm run some-script && npm install", 
    "some-script": "gulp some-other-script" 
} 

는 내가 뭘하고 싶은 것은 some-script 스크립트에 추가로 전달되는 명령 줄에서 setup 스크립트에 인수를 전달하는 것입니다.

npm run script -- --abc=123을 실행하면 스크립트 끝 부분에 인수가 추가되지만 특정 스크립트 (이 경우 npm run some-script)로 전달하고 싶습니다. 또한 스크립트 정의를 다음과 같이 다시 작성하려고 시도했습니다. "setup": "npm install && npm run some-script -- --sample=sample&& npm install" 행운이 없습니다.

쉘 기능 (여기에 설명 : Sending command line arguments to npm script 및 여기 https://github.com/npm/npm/issues/9627)을 알고 있지만 크로스 플랫폼에서 작동하는 솔루션이 필요합니다.

할 방법이 있습니까?

+0

안녕하세요, 이것을 달성하는 방법을 다 했습니까? 동일한 케이스 사용법이 있습니다.) – Deunz

+0

스크립트의 일부분에서 문제가 발생하는 것 같습니다. – Deunz

답변

1

좋아요. 해결 방법을 찾았습니다. --arg1이 "main": "npm run script1 && npm run script2"

이 방법에 문제가있다 -

NPM 메인 실행

첫번째 목표는 다른 스크립트의 호출을 일부 인수 스크립트 및 캐스케이드이 사용할 수 있도록했다 계단식은 npm에 전달 된 arg를 추가하여 수행해야합니다. "npm run script1 & & npm script2 실행"의 끝 부분에서 main을 실행하십시오.

"config": { 
    "arg1": "ARG_VALUE" 
}, 

을 다음 :

가 1 당신이 package.json에 추가해야합니다 : 여기

은 내가 찾은 주위에 작품입니다 실행 NPM script1이 : 나는 첫 번째 요소에 전달하는 방법을 찾을 수 스크립트에서이 같은 호출에 추가 할 수 있습니다 : 주요 실행 NPM하지만 당신은 ARG_VALUE 될 수정해야합니다

"main": "npm run script_no_arg1 && npm run scrip1 -- --%npm_package_config_arg1% && npm run script2 -- --%npm_package_config_component% && npm run script_no_arg2" 

을 마지막으로, 당신은 어떤 인수로 호출 할 필요가 없습니다 내 경우에는 내가 전화 한 꿀꺽 작업 :

gulp.task('inline-build-templates', function() { 
    let component = process.argv[3]; 
    component = component.split('--')[1]; 
    console.log('RUNNING GULP TASK : inline-build-templates for component ' + component); 
    // whatever task gulp 
}); 

: 그것은 당신이 꿀꺽 작업에 그런 식으로 인수를 얻을 수 있습니다 작동

"cleardown": "rimraf build lib", 
"inline-build-templates": "gulp inline-build-templates", 
"step1": "npm run cleardown && npm run inline-build-templates -- --%npm_package_config_arg1%", 

앞 스크립트 :

마지막 일을 launc 희망이 도움이됩니다.

+0

다른 스크립트의 인수를 제공하는 것이 불가능한 것 같습니다. 커맨드 라인 **에서 사슬 **. 귀하의 솔루션은 내가 원했던 것과 비슷하지만이 명령을 실행할 때마다 package.json의 일부 속성을 변경하고 싶지 않습니다. 어쨌든 고마워. – metodribic

관련 문제