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 패키지 교차 환경을 사용하십시오.아주 쉽네요.윈도우즈, 리눅스 및 모든 환경에서 작동합니다.&&을 사용하여 다음 작업으로 이동하지 않습니다.환경을 설정하고 다음 작업을 시작하면 됩니다.여기 댓글 중 하나에 있는 제안에 대해 @mikekider에게 공로를 돌립니다.
설명서에서:
{
"scripts": {
"build": "cross-env NODE_ENV=production OTHERFLAG=myValue webpack --config build/webpack.config.js"
}
}
글로벌 변수를 여러 개 설정하려면 연속적으로 지정한 다음 명령을 실행합니다.
궁극적으로 실행되는 명령어는 다음과 같습니다(spaen 사용).
webpack --config build/webpack.config.js
그NODE_ENV
합니다.
저는 단지 미래의 노드 탐험가들을 위해 여기에 제 2센트를 추가하고 싶었습니다. 14에서 "Ubuntu 14.04"NODE_ENV=test
효과가 없었어요, 저는 사용해야 했어요.export NODE_ENV=test
후에NODE_ENV=test
이상하게도 일을 시작했습니다.
를 사용해야 .set NODE_ENV=test
그러나 교차 플랫폼 솔루션의 경우 교차 환경 라이브러리가 효과를 발휘하지 못하는 것으로 보이며, 이를 위해 라이브러리가 정말 필요합니까?
export NODE_ENV=test || set NODE_ENV=test&& yadda yadda
합니다. 되지 않는 에 합니다. 그렇지 않으면 Windows가 인식되지 않는 Windows에서 충돌합니다.export NODE_ENV
뒷공간은 잘 혹시라도 제가 요.뒤에 오는 공간에 대해서는 잘 모르겠지만, 만약 제가 그것들도 제거했는지 확인하기 위해서입니다.
환경 변수를 제 가 많기 때문에 의 환경 합니다..env
파일(소스 컨트롤에서 이 설정을 무시하십시오). 다음 에 그런다 (Linux에서) 사두추를 .export $(cat .env | xargs) &&
응용 프로그램을 시작하기 전에 스크립트 명령을 실행합니다.
».env
파일 이름:
VAR_A=Hello World
VAR_B=format the .env file like this with new vars separated by a line break
»index.js
:
console.log('Test', process.env.VAR_A, process.env.VAR_B);
»package.json
:
{
...
"scripts": {
"start": "node index.js",
"env-linux": "export $(cat .env | xargs) && env",
"start-linux": "export $(cat .env | xargs) && npm start",
"env-windows": "(for /F \"tokens=*\" %i in (.env) do set %i)",
"start-windows": "(for /F \"tokens=*\" %i in (.env) do set %i) && npm start",
}
...
}
유감스럽게도 스크립트에서 스크립트를 호출하여 환경 변수를 설정할 수 없습니다. 예를 들어"start-windows": "npm run env-windows && npm start"
그래서 스크립트에 약간의 중복성이 있습니다.
는 env 변수를 할 수 있습니다.npm run env-linux
또는npm run env-windows
그리고 그들이 실행함으로써 당신의 앱으로 만들어지는지 테스트합니다.npm run start-linux
또는npm run start-windows
.
.YOURENV
:
{
...
"scripts": {
"help": "set NODE_ENV=YOURENV && tagove help",
"start": "set NODE_ENV=YOURENV && tagove start"
}
...
}
@루크의 대답은 거의 내가 필요로 하는 대답이었습니다!감사해요.
선택한 답변은 매우 간단하지만 오래되었기 때문에 스크립트를 실행하고 Luke의 답변에 대한 몇 가지 제한 사항을 수정할 때 .env 별도 파일에서 변수를 가져올 수 있는 대안을 제공하고자 합니다.사용해 보십시오.
.env 파일 :::
# This way, you CAN use comments in your .env files
NODE_PATH="src/"
# You can also have extra/empty lines in it
SASS_PATH="node_modules:src/styles"
그런 다음 패키지 json에서 변수를 설정하고 필요한 스크립트보다 먼저 실행하는 스크립트를 만듭니다.
꾸러미json :::
scripts: {
"set-env": "export $(cat .env | grep \"^[^#;]\" |xargs)",
"storybook": "npm run set-env && start-storybook -s public"
}
일부 관측치:
grep'ed cat 명령의 정규식은 주석과 빈 행을 지웁니다.
그
&&
에 대해 "주의"할 필요가 없습니다.npm run set-env
동일한 명령에서 변수를 설정하는 경우 필요한 값입니다.만약 당신이 실을 사용하고 있다면, 당신은 경고를 볼 수 있습니다, 당신은 그것을 바꿀 수 있습니다.
yarn set-env
또는 사용npm run set-env --scripts-prepend-node-path &&
대신.
다양한 환경
다른 환경 변수를 사용할 수 있다는 것도 장점입니다.
scripts: {
"set-env:production": "export $(cat .production.env | grep \"^[^#;]\" |xargs)",
"set-env:development": "export $(cat .env | grep \"^[^#;]\" |xargs)",
}
키, 암호 또는 민감한/개인 데이터가 있을 때는 .env 파일을 git 저장소에 추가하지 마십시오!
업데이트: 이 솔루션은 npm RFC 21로 인해 npm v7에서 손상될 수 있습니다.
주의: 이 작업이 다음 작업과 함께 수행되는지 여부를 알 수 없습니다.yarn
npm (및 yarn)은 패키지로부터 많은 데이터를 전달합니다.json을 환경 변수로 스크립트에 추가합니다.사용하다npm run env
그들 모두를 보기 위해.이는 https://docs.npmjs.com/misc/scripts#environment 에 문서화되어 있으며 다음과 같은 "확장" 스크립트에만 해당되지 않습니다.prepublish
하만실행스있습다니도트크립지된에 의해 되는 모든 .npm run
.
코드 이한내코액예수할있습다니스세에드부)에 수 .process.env.npm_package_config_port
그러나 스크립트를 실행하는 셸에서 이미 사용할 수 있으므로 다음과 같이 액세스할 수도 있습니다.$npm_...
확장(확장 구문은 윈도우에서 작동하지 않을 수 있음).
"name": "myproject",
...
"config": {
"port": "8010"
},
"scripts": {
"start": "node server.js $npm_package_config_port",
"test": "wait-on http://localhost:$npm_package_config_port/ && node test.js http://localhost:$npm_package_config_port/"
}
이러한 "config" 필드의 중요한 특성은 사용자가 package.json!을 수정하지 않고 재정의할 수 있다는 것입니다.
$ npm run start
> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port
Serving on localhost:8010
$ npm config set myproject:port 8020
$ git diff package.json # no change!
$ cat ~/.npmrc
myproject:port=8020
$ npm run start
> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port
Serving on localhost:8020
npm 구성 및 yarn 구성 문서를 참조하십시오.
실이 읽는 것처럼 보입니다.~/.npmrc
그렇게npm config set
두 가지 모두에 영향을 미치지만,yarn config set
에 씁니다.~/.yarnrc
그래서 오직 실만이 그것을 볼 것입니다 :-(
대규모 환경 변수 집합의 경우 또는 재사용하려는 경우 사용할 수 있습니다.
추적으로그가, 그▁as..env
파일은 direnv에서도 작동합니다.
./.env
파일 이름:
# This is a comment
ENV1=THANKS
ENV2=FOR ALL
ENV3=THE FISH
./package.json
:
{
"scripts": {
"test": "env-cmd mocha -R spec"
}
}
이것은 Windows 콘솔에서 작동합니다.
"scripts": {
"setAndStart": "set TMP=test&& node index.js",
"otherScriptCmd": "echo %TMP%"
}
npm run aaa
출력:test
자세한 내용은 이 답변을 참조하십시오.
단일 환경 변수의 경우
"scripts": {
"start": "set NODE_ENV=production&& node server.js"
}
다중 환경 변수의 경우
"scripts": {
"start": "set NODE_ENV=production&& set PORT=8000&& node server.js"
}
때.NODE_ENV
은 환경모든변수를devDependencies로 'production'에 있는 를 'package.json
installnpm 파일을 실행할 때됩니다.다음을 사용하여 이 작업을 수행할 수도 있습니다.--production
플래그:
npm install --production
설정용NODE_ENV
은 이 중 것이든 할 수 있습니다.
방법 1: 세트NODE_ENV
노드
Windows
:
set NODE_ENV=production
Linux, macOS or other unix
system : 반템기시스::
export NODE_ENV=production
이렇게 하면 현재 bash 세션에 대해 NODE_ENV가 설정되므로 이 문 이후에 시작된 모든 앱은 NODE_ENV가 운영으로 설정됩니다.
방법 2: 세트NODE_ENV
앱의
NODE_ENV=production node app.js
이것은 설정될 것입니다.NODE_ENV
현재 앱에만 해당됩니다.이것은 우리가 다른 환경에서 앱을 테스트하고 싶을 때 도움이 됩니다.
방법 3: 만들기.env
파일링하여 사용합니다.
이것은 여기에 설명된 아이디어를 사용합니다.자세한 설명은 이 게시물을 참조하십시오.
기본적으로 .env 파일을 생성하고 일부 bash 스크립트를 실행하여 환경에 설정합니다.
env-cmd 패키지를 사용하여 .env 파일에 정의된 환경 변수를 로드하면 bash 스크립트를 작성할 수 있습니다.
env-cmd .env node app.js
방법 4: 사용cross-env package
이 패키지를 사용하면 모든 플랫폼에 대해 환경 변수를 한 가지 방식으로 설정할 수 있습니다.
npm과 함께 설치한 후에는 패키지의 배포 스크립트에 추가하기만 하면 됩니다.json은 다음과 같습니다.
"build:deploy": "cross-env NODE_ENV=production webpack"
히어로가 코드를 것을 되었는데, ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ--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;
}
패키지에서 환경 변수를 설정하는 더 나은 방법을 알고 있는 다른 사람의 답변을 수락하면 정말 감사하겠습니다.json 또는 init 스크립트 또는 다른 사람에 의해 앱 부트스트랩되는 것과 같은 것.
창에서 gitbash를 사용합니다.Git Bash는 명령을 cmd와 다르게 처리합니다.
대부분의 윈도우즈 명령 프롬프트는 NODE_ENV= production에서 환경 변수를 설정할 때 질식합니다(Windows에서는 네이티브 Bash를 사용하는 Bash는 예외임). 마찬가지로 창 명령과 POSIX 명령이 환경 변수를 활용하는 방식에도 차이가 있습니다. POSIX에서는 $ENV_VAR을 사용하고 창에서는 %ENV_VAR%를 사용합니다.교차 환경 문서
{
...
"scripts": {
"help": "tagove help",
"start": "env NODE_ENV=production tagove start"
}
...
}
dotenv 패키지를 사용하여 환경 변수를 선언합니다.
{
...
"scripts": {
"start": "ENV NODE_ENV=production someapp --options"
}
...
}
패키지에서 node.js 스크립트를 실행하고 있습니다.다중 환경 변수가 있는 json:
- 꾸러미json 파일:
"scripts": {
"do-nothing": "set NODE_ENV=prod4 && set LOCAL_RUN=true && node ./x.js",
},
x.js 파일은 다음과 같습니다.
let env = process.env.NODE_ENV;
let isLocal = process.env.LOCAL_RUN;
console.log("ENV" , env);
console.log("isLocal", isLocal);
하기 쉬운 솔루션: 가장우고휴쉬기운솔루션하:package.json
:
"scripts": {
"serve": "export NODE_PRESERVE_SYMLINKS_MAIN=1 && vue-cli-service serve"
},
windows
를 만들다export.cmd
그리고 그것을 당신의 어딘가에 놓습니다.%PATH%
:
@echo off
set %*
다음과 같은 경우:
- 현재 Windows를 사용하고 있습니다.
- Gitbash가 설치되어 있어야 합니다.
- 을 사용하고 싶지
set ENV
할 수 있는 입니다.윈도우 개발 시스템에서만 실행할 수 있도록 하는 json;
envsetting 할 수 .package.json
Windows/Linux/Mac 버전은 다음과 같습니다.
$ npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
질문에 직접 답변하지는 않았지만 다른 답변 위에 아이디어를 공유하고 싶습니다.제가 알아낸 바에 따르면, 이들 각각은 플랫폼 간 독립성을 달성하기 위한 어느 정도의 복잡성을 제공할 것입니다.
제 시나리오에서는 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 수안됩니에서 ENV 하면 안 .package.json
는 영이사는행동을 사용합니다.NODE_ENV
로드구옵 다있수의 수../config
redis 구성 파일을 확인하고 NODE_ENV가 데이터베이스 옵션을 변경하는 데 사용하는 방법을 확인하십시오.NODE_ENV=test
예: 를 사용하여에도 다른 ENV 변여설정하하포(HTTP 있음수일트)경려도에서 .package.json
를 들어, 예들어설, 을할정경우를 하면,PORT=1234
.NODE_ENV=production
관련 구성 파일에서 다음을 참조하십시오.
# in config/servers/web.js
exports.production = {
servers: {
web: function(api){
return {
port: process.env.PORT
}
}
}
}
위에 문서화된 를 사용하는 것 외에도, 몇 가지 환경 변수를 설정하기 위해package.json
이 포함된 를 사전 노드로 할 수 JS 실행이 포함된 경우 노드를 사전 요구로 설정할 수 있습니다.dotenv/config
:
{
scripts: {
"eg:js": "node -r dotenv/config your-script.js",
"eg:ts": "ts-node -r dotenv/config your-script.ts",
"test": "ts-node -r dotenv/config -C 'console.log(process.env.PATH)'",
}
}
노드 에 이로인노인필요한이 .dotenv/config
그것은 그 자체로 읽을 것입니다..env
노드가 호출된 현재 작업 디렉터리의 파일입니다.
그.env
형식이 느슨하거나 자유형입니다.
# Comments are permitted
FOO=123
BAR=${FOO}
BAZ=Basingstoke Round About
#Blank lines are no problem
참고: 다중 환경 변수를 설정하려면 스크립트가 다음과 같이 되어야 합니다.
"scripts": {
"start": "set NODE_ENV=production&& set MONGO_USER=your_DB_USER_NAME&& set MONGO_PASSWORD=DB_PASSWORD&& set MONGO_DEFAULT_DATABASE=DB_NAME&& node app.js",
},
언급URL : https://stackoverflow.com/questions/25112510/how-to-set-environment-variables-from-within-package-json
'prosource' 카테고리의 다른 글
"도..."가 있습니까?루비의 루프? (0) | 2023.06.12 |
---|---|
Excel 축소 가능 들여쓰기 행 계층 만들기 (0) | 2023.06.12 |
해결 방법:Node.js를 실행하는 데 사용 중인 현재 플랫폼에서 재귀적으로 기능 감시를 사용할 수 없습니다. (0) | 2023.06.12 |
MVC 6 구성 요소 보기 대부분적인 견해: 무엇이 다른가요?각각은 언제 사용해야 합니까? (0) | 2023.06.12 |
iPad Safari 스크롤로 HTML 요소가 사라졌다가 다시 나타나면서 지연됨 (0) | 2023.06.12 |