관리 메뉴

bright jazz music

Node.js환경변수 설정과 dotenv(.env) 파일 관리 본문

OS 및 기타/Node.js

Node.js환경변수 설정과 dotenv(.env) 파일 관리

bright jazz music 2024. 12. 22. 13:19

dotenv 파일 종류와 우선순위

NestJS에서 환경변수 관리를 위한 dotenv 파일은 다음과 같은 종류가 있다.

  • .env: 기본 설정 파일
  • .env.local: 로컬 개발 환경 전용 설정
  • .env.development: 개발 환경 설정
  • .env.production: 운영 환경 설정
  • .env.test: 테스트 환경 설정

이 파일들은 정해진 우선순위에 따라 적용된다:
.env.local > .env.production > .env 순으로 우선순위가 적용되며, 같은 변수가 여러 파일에 정의되어 있을 경우 우선순위가 높은 파일의 값이 사용된다.

.env.local 파일 관리

.env.local 파일은 개발자의 로컬 환경에 특화된 설정을 담는다. 개발자마다 다른 설정이 필요할 수 있으므로 일반적으로 .gitignore에 추가하여 git 저장소에서 제외한다.

# .gitignore
.env.local

NODE_ENV를 이용한 환경 설정

환경변수 설정 시 크로스 플랫폼 호환성을 위해 cross-env를 사용하는 것이 권장된다:

// cross-env 설치
pnpm add -D cross-env

// npm을 사용하는 경우
npm install -D cross-env

// yarn을 사용하는 경우
yarn add -D cross-env

// -D 옵션(또는 --save-dev)은 해당 패키지를 devDependencies로 설치한다는 의미이다.
// cross-env는 개발 환경에서만 필요한 도구이기 때문에 devDependencies에 설치하는 것이 적절하다

혹이 이 차이를 모른다면 아래 포스팅 참고

 

Node.js 프로젝트의 Dependencies 이해하기

dependencies와 devDependencies의 차이Node.js 프로젝트의 package.json에는 두 종류의 의존성이 존재한다:dependencies프로젝트 실행에 필수적인 패키지실제 운영 환경에서 필요한 패키지들이 포함됨예: express,

catnails.tistory.com

 

// package.json
{
  "scripts": {
    "dev": "cross-env NODE_ENV=local pnpm run dev",
    "start": "cross-env NODE_ENV=production pnpm run start"
  }
}

cross-env를 사용하는 이유:

  • Windows와 Linux/Mac의 환경변수 설정 방식 차이를 해결
  • Windows: set NODE_ENV=production
  • Linux/Mac: NODE_ENV=production
  • cross-env는 이러한 OS 간 차이를 자동으로 처리

환경별 실행 예시

# 개발 환경 실행 (.env.local 사용)
NODE_ENV=local pnpm run dev

# 운영 환경 실행 (.env.production 사용)
NODE_ENV=production pnpm run start

각 환경에 맞는 설정 파일이 자동으로 적용되어 프로젝트가 구동된다. 이를 통해 개발, 테스트, 운영 환경별로 적절한 설정을 관리할 수 있다.

Comments