프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
다양한 환경에 한 프로젝트를 배포하게 되는데 어느 환경에 배포하느냐에 따라서 다르게 설정되어야 하는 값들이 있다. 이런 값들은 운영 체제 수준에서 환경 변수를 통해 관리하게 된다.
또 데이터베이스의 비밀번호, 서드파티 서비스의 API 키같이 민감한 인증 정보는 공개된 저장소에 올리면 위험할 수 있어서 환경 변수로 저장해두고 사용하는 것이 좋다.
node.js에서는 보통 process.env를 통해 환경 변수에 접근하게 된다.
process는 node.js에 기본으로 내장된 전역 객체이다.
애플리케이션을 실행할 때 키=값 형태로 명시해 준다. 이 경우 프로세스를 종료하면 사라진다.(애플리케이션 종료)
$ API_KEY=abc DB_PASSWORD=1234 node
Welcome to Node.js v14.15.0.
Type ".help" for more information.
> process.env.API_KEY
'abc'
> process.env.DB_PASSWORD
'1234'
운영체제에서 환경 변수를 설정하면 터미널 창을 닫을 때까지 유지할 수 있다. 맥에서는 export 명령어를 사용한다.
export API_KEY=abc
이렇게 설정하고 node를 실행하고 process.env
로 확인할 수 있다.
이 환경 변수는 터미널 창을 닫을 때까지 유지 가능하므로 애플리케이션을 종료했다 다시 실행해도 리셋되지 않는다.
일반 js 파일로 선언해서 import 해도 되고, .env
파일을 만들어도 된다. .env
를 사용할 때는 환경 변수 이름에 REACT_APP_
을 붙여줘야 한다. 보안이 필요한 환경 변수의 유출을 미연에 방지하기 위함이라고 하며, 이 접두사를 붙이지 않은 환경 변수는 무시한다.
process.env
는 실행 시 로드되기 때문에 .env
설정이 바뀌면 프로젝트를 다시 실행해야 한다.
const params = {
key: process.env.REACT_APP_환경변수이름
}
REACT_APP_환경변수이름=값
dotenv는 환경 변수를 .env
파일에 저장하고 process.env
로 로드하는 의존성 모듈이다.
.env
파일에 환경 변수를 저장하면 파일을 읽어 process.env
로 만들어준다.
CRA를 사용할 경우 dotenv가 기본으로 설치되어 있다.