.env

Younghwan Cha·2022년 12월 30일
0

configuration

목록 보기
1/7
post-thumbnail

필요 이유

파일을 작성하다 보면 코드에 개인정보와 같이 외부로 공개되어서는 안되는 정보들을

다뤄야 할 상황들이 온다. 이런 경우, 직접적으로 파일에 정보를 넣는 대신에

.env 파일을 생성해 파일을 따로 관리하는 것이 유용하다.

사용 방법

// npm i dotenv

require('dotenv').config();

console.log(process.env.DATA);

❓ 만약 .env 파일이 env 값을 사용하는 파일과 같은 디렉토리 상에 있지 않다면?

const path = require('path');

require('dotenv').config({ path: path.join(__dirname + '/../../local.env') });

Env 에 대한 이해

Env 란 우리가 System 환경 변수를 적용하는 것과 같은 역할을 한다. 시작점을 지정한

것을 기준으로 우리가 그 변수를 어디에서든 사용할 수 있도록 한다.

env 가 정의된 바로 위 상위 폴더를 시작점으로 한다.

start / env 라고 정의 되어 있다면 start 가 시작점이 되는 것이다. 그 아래 파일이라면 env 값을

읽을 수 없게 된다. env 를 정의하는 방법에는 크게 3가지가 있다.

  1. System 환경 변수 설정
  2. .env 파일 사용
  3. package.json 의 start 에 직접 환경 변수를 입력

위 3가지에는 우선 순위가 존재하고, 3, 2, 1 순으로 영향력이 강하다. 즉, 3이 2번의 값을 덮고, 2번이 1번의 값을 덮는 다는 의미이다.

env 파일을 작성 할 때에는 USER=cha 와 같이

  1. 세미클론( ; ) 작성 x
  2. 띄어쓰기 x

build next using .env

next 의 경우 아래 중 하나를 찾을 경우 이를 사용하여 build 를 사용한다.

  • process.env
  • .env.$(NODE_ENV).local
  • .env.local (Not checked when NODE_ENV is test.)
  • .env.$(NODE_ENV)
  • .env

하지만, 다음과 같은 조항이 있다.

Note: The allowed values for NODE_ENV are production, development and test.

이는 .env.production, .env.development, .env.test 와 같이 가용할 수 있는 .env 파일의 이름이 제한적이라는 것을 뜻한다. 따라서, 다양한 stage 를 사용하고 싶다면 다른 방법을 통해서 local, dev, prod 의 환경 변수를 나누어서 사용해야 한다.

[next build using .env] https://nextjs.org/docs/basic-features/environment-variables#environment-variable-load-order

	"build:dev": "cp ./.env.local ./.env.local && next build",
    "build:staging": "cp ./.env.dev ./.env.local && next build",
    "build:prod": "cp ./.env.prod ./.env.local && next build",

[kakao next.js 환경변수 처리] https://fe-developers.kakaoent.com/2022/220505-runtime-environment/

profile
개발 기록

0개의 댓글