Windows에서 npm을 실행 중이며 실행 스크립트에서 병렬 작업을 사용하고 스타일을 지정하고 싶지만 cmd에서 병렬로 실행하는 것은 내가 쓰고 싶은 package.json 파일에서 다소 지저분합니다.
scripts: { "go": "cmd1 & cmd2"}
하지만 npm은 cmd.exe에서 스크립트를 실행합니다.이 스크립트 ;
를 스크립트로 변경할 수 있습니다. { "go": "bats/bat1.bat")
여기서 bat1.bat는 Windows 스타일 호출을 사용하거나 명령을 병렬로 실행하는 시작 명령을 사용하는 cmd bat 파일입니다. 작동하지만 Windows에서만 작동하는 스크립트를 제공합니다.
npm이 bash 복제 또는 cygwin에서 스크립트를 실행하도록 할 수 있다면 훨씬 간단 할 것입니다.
시도
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이 재정의 된 셸 매개 변수에주의를 기울일 것입니다.
답변
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/
답변
이를 위해 특별히 생성 된 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)에서 모두 작동합니다.
답변
제 경우에는 npm start
Bash 내부 에서 실행해야했습니다 . 나는 실행 cmd
실행하여 나는 열려 떠들썩한 파티를 "c:\Program Files\Git\bin\bash.exe"
. bash 쉘에서 나는 그 전화를 할 수 있었다 npm build
및 npm start
성공적으로.
Git을 사용하는 경우 이미 bash가있을 수 있습니다. 그렇지 않은 경우 설치할 수 있습니다.
이것이 누군가의 시간을 절약 할 수 있기를 바랍니다.
답변
npm 스크립트에 크로스 플랫폼 powershell https://github.com/powershell/powershell#get-powershell 을 사용할 수도 있습니다 .
단일 프로젝트에 대해 설정하려면 프로젝트 루트 폴더에서 다음을 실행하십시오.
npm config set script-shell pwsh --userconfig ./.npmrc
모든 노드 프로젝트에 대해 전역 적으로 설정하려면 :
npm config set script-shell pwsh [--global]
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)