Windows에서 npm 런타임 스크립트를 위한 셸을 설정하는 방법
Windows에서 npm을 실행하고 있으며 실행 스크립트에서 병렬 작업을 &style로 사용하고 싶지만 cmd에서 병렬로 실행하는 것은 패키지에서 좀 지저분합니다.제가 쓰고 싶은 json 파일은-
scripts: { "go": "cmd1 & cmd2"}
그러나 npm은 cmd.exe 아래에서 스크립트를 실행합니다. cmd.exe는 에 대해 알지 못합니다.;스크립트로 변경할 수 있습니다.{ "go": "bats/bat1.bat")여기서 bat1.bat은 윈도우즈 스타일 호출 또는 시작 명령을 사용하여 명령을 병렬로 실행하는 cmd bat 파일입니다.Windows에서만 작동하는 스크립트를 제공합니다.
bash 클론 또는 cygwin에서 스크립트를 실행하도록 npm을 얻는 것이 훨씬 더 간단할 것입니다.
나는 노력했다.config: { "shell": "bash"}하지만 여전히 cmd를 실행했습니다.exe
npm에게 cmd.exe가 아닌 특정 셸을 사용하여 스크립트를 실행하도록 하는 방법이 있습니까?
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용 Git이 설치되어 있어야 합니다.
다음을 실행하여 되돌릴 수 있습니다.
npm config delete script-shell
한 가지 방법이 있습니다.
- 프로젝트 bin 디렉토리에 my_script.sh와 같은 스크립트를 생성합니다.
당신의 소포 안에.json 파일에서 bash를 사용하여 스크립트를 실행할 줄을 추가합니다.예:
"scripts": { "boogie": "bash bin/my_script.sh" }
이제 다음 방법으로 npm에서 bash 스크립트를 실행할 수 있습니다.
npm run-script boogie
우아하진 않지만, 효과가 있습니다.
Windows와 Linux/Unix 모두에서 개발 중인 경우 적어도 이 접근 방식은 두 환경 모두에서 상당히 이식 가능합니다.
npm 셸 구성 매개 변수를 재정의하는 것이 이상적이지만 윈도우즈에서는 npm(최소 버전 1.4.14)이 설정을 무시하고 대신 cmd.exe를 사용하는 것으로 보입니다.
bash 또는 Git Bash 셸에서 다음 명령을 사용하여 셸 설정을 확인합니다.
$ npm config ls -l | grep shell
기본적으로 출력은 다음과 같습니다.
shell = "C:\\WINDOWS\\system32\\cmd.exe"
그러나 기본 셸 매개 변수를 재정의하려면 \Users\yourusername\AppData\Roaming\npm\etc 디렉터리에 npmrc 파일을 추가(또는 편집)할 수 있습니다.다음 행만 추가하면 됩니다.
shell = "C:\\Program Files (x86)\\git\\bin\\bash.exe"
사용하는 경로는 bash.exe의 올바른 경로일 수 있습니다.이제 위의 "npm configs -l | grep shell" 명령을 실행하면 셸 매개 변수가 재정의되었음을 나타내는 다음과 같은 출력이 표시됩니다.
shell = "C:\\Program Files (x86)\\git\\bin\\bash.exe"
; shell = "C:\\WINDOWS\\system32\\cmd.exe" (overridden)
언젠가는 새로운 버전의 npm이 재정의된 셸 매개 변수에 주의를 기울일 것입니다.
npm 스크립트에 크로스 플랫폼 powershell https://github.com/powershell/powershell#get-powershell 을 사용할 수도 있습니다.
단일 프로젝트로 설정하려면 프로젝트 루트 폴더에서 다음을 실행합니다.
npm config set script-shell pwsh --userconfig ./.npmrc
모든 노드 프로젝트에 대해 전역적으로 설정하려면:
npm config set script-shell pwsh [--global]
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/"
},
.bat
start http://localhost:7777/datas/ && start http://localhost:7777/Info/
이를 위해 특별히 생성된 node_module을 사용합니다.저는 npm-run-all을 사용할 것을 제안하지만, parallelshell과 같은 다른 것들이 존재합니다.
다음은 질문에 대한 드롭인 교체를 위한 병렬 셸 예제입니다.
"scripts": {
"parallelexample1": "parallelshell \"echo 1\" \"echo 2\" \"echo 3\""
},
다음 명령:
npm run parallelexample1
윈도우즈 및 유닉스(리눅스/MacOS)에서 모두 작동합니다.
흥미롭게도 npm-run-all은 셸 명령을 지원하지 않으므로 아래와 같이 모든 셸 명령을 별도의 스크립트에 넣어야 합니다.
"scripts": {
"parallelexample2": "npm-run-all echo*",
"echo1": "echo 1",
"echo2": "echo 2",
"echo3": "echo 3"
},
다음 명령:
npm run parallelexample2
윈도우즈 및 유닉스(리눅스/MacOS)에서 모두 작동합니다.
내 경우엔 그냥 도망치기만 하면 됐소npm start바시 내부로부터.나는 달립니다cmd "bash"를 ."c:\Program Files\Git\bin\bash.exe" 쉘 는 bash를 수 있었습니다.npm build그리고.npm start성공적으로
Git를 사용하는 경우 이미 bash를 사용할 수 있습니다.그렇지 않은 경우 설치할 수 있습니다.
이것이 누군가의 시간을 절약할 수 있기를 바랍니다.
언급URL : https://stackoverflow.com/questions/23243353/how-to-set-shell-for-npm-run-scripts-in-windows
'programing' 카테고리의 다른 글
| 중단점은 현재 적중되지 않습니다.Silverlight 응용 프로그램에서 이 문서에 대한 기호가 로드되지 않았습니다. (0) | 2023.05.04 |
|---|---|
| 윈도우 개발 기계를 사용하여 아이폰용으로 개발하려면 어떻게 해야 합니까? (0) | 2023.04.29 |
| 개체에 특정 속성이 있는지 어떻게 테스트할 수 있습니까? (0) | 2023.04.29 |
| CheckBox를 내용에 맞추려면 어떻게 해야 합니까? (0) | 2023.04.29 |
| Azure WebApp As.NET Core 2 오류:응용 프로그램을 시작하는 동안 오류가 발생했습니다. (0) | 2023.04.29 |