Next.js 애플리케이션을 확장 가능하고 유지보수가 용이하게 구축하는 데 중요한 측면 중 하나는 환경변수를 관리하는 것이다. 이 포스트에서는 process.env.NODE_ENV
, .env
파일, NEXT_PUBLIC_
접두사 등을 포함하여 환경변수를 효과적으로 활용하는 방법을 알아본다.
Next.js에서 process.env.NODE_ENV
를 사용하면 현재 Node.js 환경변수에 접근할 수 있다.
// NODE_ENV 변수에 접근
const env = process.env.NODE_ENV;
console.log(`Environment: ${env}`);
// 출력: Environment: development
위 코드는 현재 노드 환경에 접근하여 출력한다. 대부분의 경우 development, production 또는 test 중 하나일 것이다.
Next.js는 개발의 다양한 목적과 단계를 위해 여러 .env
파일을 제공하여 환경변수를 정의한다. 각 파일의 개요는 다음과 같다:
.env.local
파일은 테스트 환경을 제외하고 로컬 수준에서 변수를 재정의할 수 있다.변수가 여러 .env
파일에서 정의되는 경우, Next.js는 특정 순서에 따라 파일을 로드하여 어떤 값을 사용할지 결정한다. 중복 키가 있는 경우, 더 높은 우선 순위의 파일이 다른 값으로부터 값을 덮어쓴다.
.env.local
파일은 최고의 우선 순위(1)를 가지며 테스트 환경을 제외한 로컬 수준에서 변수를 오버라이드할 수 있다..env.development
, .env.production
, .env.test
와 같은 특정 환경 파일이다. 이 파일은 각각의 환경에 대한 변수를 정의하는 데 사용된다..env
파일은 가장 낮은 우선 순위(3)를 가지며 모든 환경에서 로드되는 환경 변수를 정의하는 데 사용된다.예를 들어, API_URL
키에 대해 .env
파일에 다음과 같은 정의가 있다고 가정해보자
파일명 | 정의 |
---|---|
.env.local | API_URL=https://api.local.com |
.env.development, .env.production, .env.test | API_URL=https://api.env.com |
.env | API_URL=https://api.default.com |
Next.js가 각각의 환경에서 이 파일들을 어떻게 로드하여 API_URL
값을 결정 하는지 알아보자.
.env.local
이 존재하고 API_URL
을 정의하면 해당 값이 사용된다..env.development
에서의 값이 사용된다..env.development
에서 정의되지 않았다면 .env
에서의 값이 사용된다..env.local
이 존재하고 API_URL
을 정의하면 해당 값이 사용된다..env.production
에서의 값이 사용된다..env.production
에서 정의되지 않았다면 .env
에서의 값이 사용된다..env.local
이 존재하고 API_URL
을 정의하면 해당 값이 사용된다..env.test
에서의 값이 사용된다..env.test
에서 정의되지 않았다면 .env
에서의 값이 사용된다.Next.js에서 환경변수는 브라우저에 번들링되고 노출되어 클라이언트 측 코드가 특정 구성 또는 설정에 접근할 수 있게 할 수 있다. 이 기능은 클라이언트 측 라이브러리나 서비스를 구성할 필요가 있을 때 특히 유용한다.
그러나 브라우저에 노출되는 변수에 주의해야 할 점은 이것이 보안 위험을 초래할 수 있다는 것이다. 비밀 키나 비밀번호와 같은 민감한 정보는 브라우저에서 접근 가능한 변수에 포함되어서는 안 된다.
NEXT_PUBLIC_
접두사 사용환경변수를 브라우저에 노출하려면 변수 앞에 NEXT_PUBLIC_
을 접두사로 붙이면 된다. 예를 들어 API 엔드포인트 URL을 브라우저에서 사용 가능하게 하려면 .env
파일에서 아래와 같이 정의할 수 있다.
NEXT_PUBLIC_VAR=value
이 변수는 자바스크립트 번들에 인라인되며 클라이언트 측 코드의 어디에서나 process.env.NEXT_PUBLIC_VAR
을 사용하여 접근할 수 있다.
다음은 이 변수를 React 컴포넌트에서 어떻게 사용할 수 있는지에 대한 간단한 예시이다.
// NEXT_PUBLIC_ 접두사가 있는 변수에 접근
const publicVar = process.env.NEXT_PUBLIC_VAR;
console.log(`Public Variable: ${publicVar}`);
// 출력: Public Variable: value
앞서 언급했듯이, 브라우저에 환경변수를 노출하는 것은 보안에 대한 신중한 고려가 필요한다. NEXT_PUBLIC_
접두사로 시작하는 어떤 변수라도 클라이언트 측 코드에 포함되고 웹 페이지의 소스 코드를 볼 수 있는 사람에 의해 접근할 수 있다.
비밀 키나 개인 데이터와 같은 민감한 정보를 NEXT_PUBLIC_
접두사를 사용하여 노출해서는 안 된다. 이렇게 하면 악의적인 사용자에게 이 정보가 노출될 수 있으며, 응용 프로그램의 보안에 중대한 위험이 될 수 있다.
Next.js에서 환경변수를 관리하는 것은 견고한 애플리케이션을 구축하기 위해 필수적이다. 다양한 .env
파일은 환경별 구성에 대한 유연성과 통제를 제공한다. 이러한 파일의 우선 순위와 적절한 사용법을 이해함으로써 Next.js 프로젝트의 효율성과 유지보수성을 향상시킬 수 있다.
.env
파일은 무엇인가?.env
, 개발은 .env.development
, 생산은 .env.production
, 테스트는 .env.test
, 로컬 재정의는 .env.local
이다.NEXT_PUBLIC_
을 접두사로 붙이다. 이렇게 하면 클라이언트 측 코드에서 사용할 수 있다..env
파일 간에 중복 키를 어떻게 관리하나요?.env
파일을 사용하십시오. 예를 들어, .env.development
또는 .env.production
등이 있다. .env.local
은 로컬에서 변수를 재정의할 수 있으며 테스트에서는 제외된다.[Next.js] SSR, SSG, CSR 언제 사용하는것이 좋을까 - 적절한 활용 사례 |
---|
[Next.js] 3가지 렌더링 SSR, CSR, SSG 이해하기: 장단점 분석 |
[Next.js] 환경변수를 사용하는 간단한 방법 |
CloneCoding
한 줄의 코드에서 시작되는 혁신!