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": "NODE_ENV=test mocha --reporter spec"
},
...
그런 다음 process.env.NODE_ENV
앱에서 사용 하십시오.
참고 : 이것은 Mac 및 Linux 전용 입니다. Windows의 경우 주석을 참조하십시오.
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 스크립트 또는 다른 사람이 앱을 부트 스트랩하는 환경 변수를 설정하는 더 나은 방법을 알고있는 다른 사람의 답변을 받아 주셔서 감사합니다.
질문에 직접 대답하지는 않지만 다른 답변 위에 아이디어를 공유하고 싶습니다. 내가 얻은 것에서 크로스 플랫폼 독립성을 달성하기 위해 어느 정도의 복잡성을 제공 할 것입니다.
시나리오에서 원래 JWT 인증으로 서버를 보호할지 여부를 제어하는 변수를 설정하려고했습니다 (개발 목적으로)
답변을 읽은 후 인증을 켜고 끄는 두 개의 다른 파일을 만들기로 결정했습니다.
"scripts": {
"dev": "nodemon --debug index_auth.js",
"devna": "nodemon --debug index_no_auth.js",
}
파일은 단순히 원래 index.js 파일을 호출하는 래퍼입니다 appbootstrapper.js
.
//index_no_auth.js authentication turned off
const bootstrapper = require('./appbootstrapper');
bootstrapper(false);
//index_auth.js authentication turned on
const bootstrapper = require('./appbootstrapper');
bootstrapper(true);
class AppBootStrapper {
init(useauth) {
//real initialization
}
}
아마도 이것은 다른 사람을 도울 수 있습니다
더 큰 환경 변수 세트를 사용하거나 재사용하려는 경우을 사용할 수 있습니다 env-cmd
.
./.env
파일:
# This is a comment
ENV1=THANKS
ENV2=FOR ALL
ENV3=THE FISH
./package.json
:
{
"scripts": {
"test": "env-cmd mocha -R spec"
}
}
에 ENV 변수를 설정해서는 안됩니다 package.json
. actionhero를 사용 NODE_ENV
하여의 파일에서로드 된 구성 옵션을 변경할 수 있습니다 ./config
. redis 구성 파일을 확인하고 NODE_ENV가 데이터베이스 옵션을 변경하는 데 어떻게 사용되는지 확인하십시오.NODE_ENV=test
다른 ENV 변수를 사용하여 항목 (아마도 HTTP 포트)을 설정하려는 경우 여전히에서 아무것도 변경할 필요가 없습니다 package.json
. 예를 들어, PORT=1234
ENV에서 설정하고 에서 HTTP 포트로 사용하려는 NODE_ENV=production
경우 관련 구성 파일 IE에서 해당 포트를 참조하십시오.
# in config/servers/web.js
exports.production = {
servers: {
web: function(api){
return {
port: process.env.PORT
}
}
}
}
{
...
"scripts": {
"start": "ENV NODE_ENV=production someapp --options"
}
...
}
이것은 Windows 콘솔 에서 작동합니다 .
"scripts": {
"aaa": "set TMP=test && npm run bbb",
"bbb": "echo %TMP%"
}
npm run aaa
산출: test
자세한 내용은 이 답변 을 참조하십시오.
'IT story' 카테고리의 다른 글
SQL Server에서 datetime 필드의 기본값을 타임 스탬프에 추가 (0) | 2020.04.10 |
---|---|
PowerShell을 사용하여 관리자 권한으로 명령을 실행 하시겠습니까? (0) | 2020.04.10 |
PHP : 다시 색인화하는 대신 키를 유지하면서 두 개의 배열을 병합 하시겠습니까? (0) | 2020.04.10 |
Android SDK 관리자가 구성 요소를 설치하지 않음 (0) | 2020.04.10 |
MVVM에서 PasswordBox에 바인딩하는 방법 (0) | 2020.04.10 |