플랫폼에서 환경 변수를 설정하고 사용하는 스크립트를 실행합니다.
통지 : 크로스 엔프는 여전히 잘 작동하지만 유지 보수 모드입니다. 새로운 기능이 추가되지 않으며 심각하고 공통된 버그 만 수정되며 시간이 지남에 따라 Node.js로만 최신 상태로 유지됩니다. 자세히 알아보십시오
대부분의 Windows 명령 프롬프트는 NODE_ENV=production 으로 환경 변수를 설정하면 질식합니다. (예외는 기본 배쉬를 사용하는 Bash on Windows입니다.) 마찬가지로 Windows 및 Posix 명령이 환경 변수를 활용하는 방법에는 차이가 있습니다. POSIX를 사용하면 $ENV_VAR 및 WINDOWS에서 %ENV_VAR% 사용합니다.
cross-env 플랫폼에 대해 환경 변수를 올바르게 설정하거나 사용하는 것에 대해 걱정하지 않고 단일 명령을 가질 수 있도록합니다. Posix 시스템에서 실행중인 경우처럼 설정하면 cross-env 올바르게 설정해야합니다.
cross-env 대 cross-env-shell 이 모듈은 NPM을 통해 분포되어 있으며 노드와 함께 번들로 제공되며 프로젝트의 devDependencies 중 하나로 설치해야합니다.
npm install --save-dev cross-env
경고! 실수로 맬웨어 설치를 피하기 위해 포장을 올바르게 철자하는 패키지를 설치할 때
참고 : Cross-Env의 버전 7은 node.js 10 이상 만 지원하여 Node.js 8 이상에서 사용하여 버전 6
npm install --save-dev cross-env@6
NPM 스크립트에서 이것을 사용합니다.
{
"scripts" : {
"build" : " cross-env NODE_ENV=production webpack --config build/webpack.config.js "
}
} 궁극적으로 ( cross-spawn 사용) 실행 된 명령은 다음과 같습니다.
webpack --config build/webpack.config.js
NODE_ENV 환경 변수는 cross-env 에 의해 설정됩니다
한 번에 여러 환경 변수를 설정할 수 있습니다.
{
"scripts" : {
"build" : " cross-env FIRST_ENV=one SECOND_ENV=two node ./my-program "
}
}또한 명령을 여러 가지 명령으로 나누거나 실제 명령 실행에서 환경 변수 선언을 분리 할 수도 있습니다. 당신은 이런 식으로 할 수 있습니다 :
{
"scripts" : {
"parentScript" : " cross-env GREET= " Joe " npm run childScript " ,
"childScript" : " cross-env-shell " echo Hello $GREET " "
}
} childScript 실제 명령을 실행하도록 보유하고 있으며 parentScript 사용하도록 환경 변수를 설정합니다. 그런 다음 자식 스크립트를 실행하는 대신 부모를 실행합니다. 이것은 다른 ENT 변수로 동일한 명령을 시작하거나 환경 변수가 너무 길어서 모든 것을 한 줄로 가질 때 매우 유용합니다. 또한 Windows에서도 $GREET env var 구문을 사용할 수 있음을 의미합니다 %GREET%
홀수의 백 슬래시로 달러 표시를 앞에 놓으면 표현식 진술이 대체되지 않습니다. 이것은 JSON 스트링 탈출이 발생한 후 백 슬래시를 의미합니다. "FOO=\$BAR" 교체되지 않습니다. "FOO=\\$BAR" 가 교체됩니다.
마지막으로 JSON 문자열 (예 : TS-Loader를 사용할 때)을 전달하려면 다음과 같이 수행 할 수 있습니다.
{
"scripts" : {
"test" : " cross-env TS_NODE_COMPILER_OPTIONS={ \" module \" : \" commonjs \" } node some_file.test.ts "
}
} 이중 인용문 (") 과 (') 따옴표가 없기 전에 트리플 백 슬래시 (\) 에 특별한주의를 기울이십시오.
cross-env 대 cross-env-shell cross-env 모듈은 cross-env cross-env-shell 두 가지 빈을 노출시킵니다. 첫 번째는 cross-spawn 사용하여 명령을 실행하고 두 번째는 Node의 spawn 의 shell 옵션을 사용합니다.
cross-env-shell 의 주요 사용 사례는 하나의 명령이 아닌 전체 인라인 쉘 스크립트에 걸쳐 환경 변수를 설정 해야하는 경우입니다.
예를 들어, 환경 변수를 직렬로 여러 명령에 적용하려면 따옴표로 래핑하고 cross-env 대신 cross-env-shell 사용해야합니다.
{
"scripts" : {
"greet" : " cross-env-shell GREETING=Hi NAME=Joe " echo $GREETING && echo $NAME " "
}
} 경험의 규칙은 다음과 같습니다. 해석하려는 특수 쉘 문자가 포함 된 명령을 cross-env 에 전달하려면 cross-env-shell 사용하십시오. 그렇지 않으면 cross-env 를 고수하십시오.
Windows에서는 프로그램 내부의 신호 이벤트를 처리하려면 cross-env-shell 사용해야합니다. 이에 대한 일반적인 경우는 명령 줄 인터페이스에서 Ctrl + C 눌러 SIGINT 이벤트를 캡처하려는 경우입니다.
npm 기본적으로 cmd 사용하며 명령 대체를 지원하지 않으므로이를 활용하려면 script-shell PowerShell로 설정하려면 .npmrc 업데이트해야합니다. 여기에서 자세히 알아보십시오.
나는 원래 NPM 스크립트와 관련된 문제를 해결하기 위해 이것을 만들었습니다. 이로 인해 Windows 사용자가 프로젝트에 훨씬 쉽게 기여했습니다.
env-cmd 대신 파일에서 환경 변수를 읽습니다@naholyr/cross-env 기본값 설정을 지원하는 cross-env 기여를 원하십니까? 좋은 첫 번째 이슈 레이블을 찾으십시오.
버그, 누락 된 문서 또는 예기치 않은 동작에 대한 문제를 제출하십시오.
버그를 참조하십시오
이 프로젝트는 유지 보수 모드에 있으며 새로운 기능 요청이 고려되지 않습니다.
자세히 알아보십시오
이 사람들에게 감사합니다 (이모티콘 키) :
켄트 C. Dodds ? | Ya Zhuang ? | 제임스 해리스 | compumike08 ? | Daniel Rodríguez Rivero ? | 조나스 케인 홀츠 ? | 휴고 우드 ? |
Thiebaud Thomas ? | 다니엘 레이 로페즈 | Amila Welihinda ? | 폴 베츠 ? | 터너 헤이즈 ? | Suhas Karanth | 스벤 |
D. Nicolás Lopez Zelaya | 요한 에르난데스 | 요르단 닐슨 ? | 제이슨 쿡 | BIBO5088 | 에릭 베리 ? | Michaël de Boey |
로리 에스 콜라 | Devuxer | 다니엘 |
이 프로젝트는 All-Contritors 사양을 따릅니다. 모든 종류의 공헌을 환영합니다!
참고 : 이것은 프로젝트에 늦게 추가되었습니다. 이 프로젝트에 어떤 식 으로든 기여한 경우
CONTRIBUTING.md지침에 따라 목록에 자신을 추가하도록 요청하십시오.
MIT