[node.js] package.json에서 환경 변수를 설정하는 방법

내부에서 일부 환경 변수를 설정 package.json하여 npm start유사한 명령 과 함께 사용하는 방법 은 무엇입니까?

여기 내가 현재 가지고있는 것이 있습니다 package.json:

{
  ...
  "scripts": {
    "help": "tagove help",
    "start": "tagove start"
  }
  ...
}

NODE_ENV시작 스크립트에서 환경 변수 (예 :)를 설정하고 명령 하나만으로 앱을 시작할 수 npm start있습니다.



답변

스크립트 명령에서 환경 변수를 설정하십시오.

...
"scripts": {
  "start": "node app.js",
  "test": "env NODE_ENV=test mocha --reporter spec"
},
...

그런 다음 process.env.NODE_ENV앱에서 사용 하십시오.

참고 : env여러 플랫폼에서 작동합니다. Mac / Linux에만 관심이 있다면 생략해도됩니다.


답변

NPM 패키지 cross-env 만 사용하십시오 . 매우 쉽습니다. Windows, Linux 및 모든 환경에서 작동합니다. &&를 사용하여 다음 작업으로 이동하지 마십시오. 환경을 설정 한 후 다음 작업을 시작하면됩니다. 여기 의견 중 하나에 대한 제안에 대해 @mikekidder 에게 감사드립니다 .

설명서에서 :

{
  "scripts": {
    "build": "cross-env NODE_ENV=production OTHERFLAG=myValue webpack --config build/webpack.config.js"
  }
}

여러 전역 변수를 설정하려면 연속적으로 변수를 지정하고 명령을 실행하십시오.

궁극적으로 (스폰을 사용하여) 실행되는 명령은 다음과 같습니다.

webpack --config build/webpack.config.js

NODE_ENV환경 변수 간 ENV 설정 될


답변

미래의 노드 탐색기를 위해 여기에 2 센트를 추가하고 싶었습니다. 내 우분투 14.04에서 NODE_ENV=test작동하지 않았는데, export NODE_ENV=test후에도 NODE_ENV=test일하기 시작한 이상한 것을 사용해야 했습니다.

Windows에서 말했듯이 set NODE_ENV=test크로스 플랫폼 솔루션의 경우 크로스 환경 라이브러리가 트릭을 수행하지 않는 것처럼 보이므로 실제로이 작업을 수행하려면 라이브러리가 필요합니까?

export NODE_ENV=test || set NODE_ENV=test&& yadda yadda

그렇지 않으면 Windows가 인식 할 수없는 export NODE_ENV명령 인 : D 에서 충돌하므로 세로 막대가 필요합니다 . 후행 공간에 대해서는 몰라 그러나 나는 그것들도 제거했는지 확신합니다.


답변

여러 환경 변수로 작업하는 경우가 많으므로 별도의 .env파일 로 유지하는 것이 좋습니다 (소스 제어에서이 변수 를 무시하십시오).

VAR_A=Hello World
VAR_B=format the .env file like this with new vars separated by a line break

그런 다음 export $(cat .env | xargs) &&스크립트 명령 앞에 추가 하십시오.

예:

{
  ...
  "scripts": {
    ...
    "start": "export $(cat .env | xargs) && echo do your thing here",
    "env": "export $(cat .env | xargs) && env",
    "env-windows": "export $(cat .env | xargs) && set"
  }
  ...
}

테스트를 위해 npm run env(linux) 또는 npm run env-windows(windows) 를 실행하여 env 변수를 볼 수 있습니다 .


답변

다음을 교체하여 Windows에서 시도하십시오 YOURENV.

  {
    ...
     "scripts": {
       "help": "set NODE_ENV=YOURENV && tagove help",
       "start": "set NODE_ENV=YOURENV && tagove start"
     }
    ...
  }


답변

갑자기 actionhero가 다음 코드를 사용하고 있음을 발견했습니다 --NODE_ENV=production. 시작 스크립트 명령 옵션을 전달 하여 문제를 해결했습니다 .

if(argv['NODE_ENV'] != null){
  api.env = argv['NODE_ENV'];
} else if(process.env.NODE_ENV != null){
  api.env = process.env.NODE_ENV;
}

package.json 또는 init 스크립트에서 환경 변수를 설정하는 더 나은 방법을 알고 있거나 다른 사람이 앱을 부팅하는 다른 사람의 답변을 받아 주셔서 감사합니다.


답변

더 큰 환경 변수 세트를 사용하거나 재사용하려는 경우을 사용할 수 있습니다 env-cmd.

./.env 파일:

# This is a comment
ENV1=THANKS
ENV2=FOR ALL
ENV3=THE FISH

./package.json:

{
  "scripts": {
    "test": "env-cmd mocha -R spec"
  }
}