Windows에서 npm 실행 스크립트에 대한 셸을 설정하는 방법
나는 Windows에서 npm을 실행하고 있으며 실행 스크립트에서 병렬 작업을 사용하고 스타일을 지정하고 싶지만 cmd에서 병렬로 실행하는 것은 내가 쓰고 싶은 package.json 파일에서 다소 지저분합니다.
scripts: { "go": "cmd1 & cmd2"}
하지만 npm은 cmd.exe에서 스크립트를 실행합니다.이 스크립트 ;
를 스크립트로 변경할 수 있습니다. { "go": "bats/bat1.bat")
여기서 bat1.bat는 Windows 스타일 호출을 사용하거나 명령을 병렬로 실행하는 시작 명령을 사용하는 cmd bat 파일입니다. 작동하지만 Windows에서만 작동하는 스크립트를 제공합니다.
내가 시도한 bash 클론 또는 cygwin에서 스크립트를 실행하도록 npm을 얻을 수 있다면 훨씬 더 간단 할 것입니다. config: { "shell": "bash"}
하지만 여전히 cmd.exe를 실행했습니다.
cmd.exe가 아닌 특정 셸을 사용하여 스크립트를 실행하도록 npm에 알리는 방법이 있습니까?
npm 5.1 이후
npm config set script-shell "C:\\Program Files (x86)\\git\\bin\\bash.exe"
또는 (64 비트 설치)
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
참고 당신은 할 필요가 설치된 Windows 용 자식을 .
다음을 실행하여 되돌릴 수 있습니다.
npm config delete script-shell
한 가지 방법은 다음과 같습니다.
- 프로젝트 bin 디렉터리에 my_script.sh와 같은 스크립트를 만듭니다.
package.json 파일에서 bash를 사용하여 스크립트를 실행하는 행을 추가하십시오. 예를 들면 :
"scripts": { "boogie": "bash bin/my_script.sh" }
이제 다음과 같이 npm에서 bash 스크립트를 실행할 수 있습니다.
npm run-script boogie
별로 우아하지는 않지만 작동합니다.
Windows 및 Linux / Unix에서 개발하는 경우 적어도이 접근 방식은 두 환경 모두에 상당히 이식 가능합니다.
이상적으로는 npm 셸 구성 매개 변수를 재정의하는 것이 작동하지만 npm (최소 버전 1.4.14)은 Windows에서 설정을 무시하고 대신 cmd.exe를 사용하는 것처럼 보입니다.
bash 또는 Git Bash 셸에서 다음 명령을 사용하여 셸 설정을 찾습니다.
$ npm config ls -l | grep shell
기본적으로 출력은 다음과 같습니다.
shell = "C:\\WINDOWS\\system32\\cmd.exe"
그러나 기본 셸 매개 변수를 재정의하려면 npmrc 파일을 \ Users \ yourusername \ AppData \ Roaming \ npm \ etc 디렉토리에 추가 (또는 편집) 할 수 있습니다. 다음 줄을 추가하십시오.
shell = "C:\\Program Files (x86)\\git\\bin\\bash.exe"
사용하는 경로는 bash.exe에 대한 유효한 경로 일 수 있습니다. 이제 위의 "npm config ls -l | grep shell"명령을 실행하면 셸 매개 변수가 재정의되었음을 나타내는 다음 출력이 표시됩니다.
shell = "C:\\Program Files (x86)\\git\\bin\\bash.exe"
; shell = "C:\\WINDOWS\\system32\\cmd.exe" (overridden)
언젠가는 새 버전의 npm이 재정의 된 셸 매개 변수에주의를 기울일 것입니다.
이를 위해 특별히 생성 된 node_module을 사용하십시오. npm-run-all을 사용하는 것이 좋지만 parallelshell 과 같은 다른 항목 이 있습니다 .
귀하의 질문에 대한 드롭 인 교체에 대한 Parallelshell 예제는 아래에 있습니다.
"scripts": {
"parallelexample1": "parallelshell \"echo 1\" \"echo 2\" \"echo 3\""
},
다음 명령 :
npm run parallelexample1
Windows와 Unix (Linux / MacOS)에서 모두 작동합니다.
흥미롭게도 npm-run-all은 쉘 명령을 지원하지 않습니다. 따라서 모든 쉘 명령을 아래와 같이 별도의 스크립트에 넣어야합니다.
"scripts": {
"parallelexample2": "npm-run-all echo*",
"echo1": "echo 1",
"echo2": "echo 2",
"echo3": "echo 3"
},
다음 명령 :
npm run parallelexample2
Windows와 Unix (Linux / MacOS)에서 모두 작동합니다.
CMD의 방법을 사용하여 실행하십시오 .bat
!
.json
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"app": "cd build & browser-sync start --server --files 'index.html'",
"bat": "start start-browser.bat",
"starts": "start http://localhost:7777/datas/ && start http://localhost:7777/Info/"
},
.박쥐
start http://localhost:7777/datas/ && start http://localhost:7777/Info/
저와 똑같은 문제가있는 사람들 만 : npm start
Windows cmd에서는 실행할 수 있지만 (git) bash에서는 실행할 수 없습니다. 다음과 같은 오류가 있습니다.
노드가 내부 또는 외부 명령으로 인식되지 않습니다 ...
저는 이틀 동안 웹을 검색했지만 주로 시스템 환경 변수 경로에 nodejs 경로를 추가하는 아이디어를 보았습니다. 결국 내 문제를 해결 한 것은 Qwerty가 위에 쓴 줄이었습니다 ... 감사합니다 Qwerty :)
참고 URL : https://stackoverflow.com/questions/23243353/how-to-set-shell-for-npm-run-scripts-in-windows
'developer tip' 카테고리의 다른 글
SQL Server에서 함수를 만드는 방법 (0) | 2020.12.11 |
---|---|
팬더 그룹 별 누적 합계 (0) | 2020.12.11 |
Swift beta 6-혼란스러운 링커 오류 메시지 (0) | 2020.12.11 |
요소에 이벤트 리스너가 있는지 확인하십시오. (0) | 2020.12.11 |
C에서 free와 malloc은 어떻게 작동합니까? (0) | 2020.12.10 |