programing

Windows에서 npm 런타임 스크립트를 위한 셸을 설정하는 방법

sourcejob 2023. 4. 29. 09:15
반응형

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

한 가지 방법이 있습니다.

  1. 프로젝트 bin 디렉토리에 my_script.sh와 같은 스크립트를 생성합니다.
  2. 당신의 소포 안에.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

반응형