Skip to content

.env 규칙

Eunseop Lim edited this page Jul 4, 2022 · 8 revisions

이것을 사용하세요

https://nextjs.org/docs/basic-features/environment-variables#default-environment-variables 공식문서의 규칙을 따라 진행하겠습니다.

  • 환경은 총 3가지로 분류됩니다(development, production, test)
  • .env, .env.development, .env.production, .env.test 파일들은, 디폴트파일을 나타냅니다. 값이 존재하지 않을경우의 fallback 이거나, 시크릿값들이 무엇이 있는지, 어느 형태로 존재하는지 명시하는 역할입니다
  • ~.local 파일로 시크릿 값을 덮습니다. 이 값은 Github Secret 에서 정의하며, CI 파이프라인에서 파일을 생성합니다.
  • staging 환경도 따로 있긴 하지만, 이 또한 소스는 production 과 마찬가지이므로, 별다른 설정 없이 .env.production 환경변수를 따르도록 합니다. 단, .env.production.local 파일로 staging 환경에 특정된 시크릿이나 환경 구분값(NEXT_PUBLIC_ENV) 등은 명시하는 것이 좋겠습니다.

사용하지 않음(히스토리 기록용)

  • .env 는 환경변수의 형태를 정의하기 위해 공개로 간다.
  • .env.test 는 테스팅환경이므로 공개로 한다. 의존성 없는 테스터블한 코드를 강제화 하기위함. API KEY 같은 시크릿 코드 사용금지.
  • development(local), staging, production 세가지 환경에 대응해 각각 .env.development, .env.staging, .env.production 환경변수를 읽어들이고 이는 .gitignore 로 버전에 포함되지 않는다.

구체적 예시

  • .env 는 단순 뼈대 겸 환경변수가 없을 경우의 fallback을 대체하는 파일이라 number라면 0, string 이라면 string 등의 fallback 기본 값을 기입한다.
  • 로컬환경(development) 에서는 .env.development 를 만들고 npm start 를 통해 개발한다.
  • CI 환경에서는 Github Actions Workflow가 .env.staging을 만들어 배포하고 CD 환경에서는 Github Actions Workflow가 .env.production을 자동으로 만들어 배포할 것이다. => CI/CD 워크플로우 시크릿 값들은 이곳에서 정의하면 된다.

만약 로컬에서 staging 빌드를 만들어보고 싶다면, .env.staging 제작 후 npm run build:staging 을, production 빌드를 만들어보고 싶다면, .env.production 제작 후 npm run build 를 진행하면 된다