React 개발을 하다 보면, 개발 환경, 로컬 환경, 운영 환경에 따라 API 주소나 각종 설정 값들이 달라져야 하는 경우가 많습니다. 이런 설정들을 코드에 직접 박아 넣으면 관리가 엉망이 되겠죠? 😥
그래서 오늘은 React 앱에서 env-cmd라는 멋진 도구를 사용하여 환경변수를 깔끔하게 관리하는 방법을 알려드리겠습니다! 마치 마법처럼, 설정 파일만 바꿔주면 앱이 알아서 환경에 맞는 설정을 적용해 줄 거예요. ✨
1단계: env-cmd 설치하기
먼저, 프로젝트에 env-cmd를 설치해야 합니다. 터미널을 열고 아래 명령어를 입력하세요:
npm install env-cmd --save
또는
yarn add env-cmd
이 명령어는 env-cmd를 프로젝트의 개발 의존성(devDependencies)으로 설치합니다. package.json 파일을 열어보시면 devDependencies 항목에 env-cmd가 추가된 것을 확인할 수 있습니다.
2단계: 환경변수 파일 만들기
이제 환경별로 설정 값들을 담을 파일을 만들어야 합니다. 프로젝트 루트 디렉토리에 다음 파일들을 만들어주세요:
- .env.development: 개발 환경 설정
- .env.local: 로컬 환경 설정 (개인 개발용)
- .env.production: 운영 환경 설정 (실제 서비스용)
각 파일 안에는 환경변수들을 다음과 같은 형식으로 작성합니다.
REACT_APP_API_URL=https://dev.example.com/api
REACT_APP_FEATURE_ENABLED=true
주의! React 앱에서 사용하는 환경변수는 반드시 REACT_APP_으로 시작해야 합니다.
3단계: package.json 스크립트 수정하기
이제 package.json 파일의 scripts 부분을 수정하여 env-cmd를 사용하도록 설정합니다. 기존의 start 스크립트를 다음과 같이 변경하세요:
"scripts": {
"start": "env-cmd -f .env.development react-scripts start",
"start:local": "env-cmd -f .env.local react-scripts start",
"start:prod": "env-cmd -f .env.production react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
스크립트 설정, 왜 이렇게 해야 할까요? 🤔
- env-cmd: 이 명령어는 환경변수를 설정하고 다른 명령어를 실행하는 역할을 합니다.
- -f: 이 옵션은 env-cmd에게 어떤 환경변수 파일을 사용할지 알려줍니다. -f .env.development는 .env.development 파일을 사용하겠다는 의미입니다.
- react-scripts start: 이 명령어는 React 앱을 개발 모드로 실행합니다.
순서가 중요한 이유: env-cmd가 먼저 실행되어 환경변수를 설정해야 react-scripts start가 환경변수를 읽어서 앱에 적용할 수 있습니다. 만약 순서가 바뀌면 react-scripts start는 환경변수를 찾지 못해 제대로 동작하지 않을 수 있습니다.
이제 터미널에서 다음과 같이 명령어를 실행하여 앱을 실행할 수 있습니다:
- 개발 환경: npm start 또는 yarn start
- 로컬 환경: npm run start:local 또는 yarn start:local
- 운영 환경: npm run start:prod 또는 yarn start:prod
4단계: 코드에서 환경변수 사용하기
React 컴포넌트 안에서 환경변수를 사용하려면 process.env 객체를 사용하면 됩니다. 예를 들어, API 주소를 사용하려면 다음과 같이 할 수 있습니다:
const apiUrl = process.env.REACT_APP_API_URL;
fetch(apiUrl + '/users')
.then(response => response.json())
.then(data => console.log(data));
-f 옵션, 왜 꼭 써야 할까요? 🤔
env-cmd는 기본적으로 .env 파일을 찾아서 환경변수를 설정합니다. 하지만 여러 환경에 따라 다른 설정 파일을 사용해야 하므로, -f 옵션을 사용하여 사용할 환경변수 파일을 명시적으로 지정해야 합니다. -f 옵션이 없다면 env-cmd는 어떤 파일을 사용해야 할지 알 수 없어 기본 설정으로 동작하거나 오류가 발생할 수 있습니다.
장점
- 환경별 설정 분리: 환경변수 파일을 사용하여 각 환경에 맞는 설정을 쉽게 관리할 수 있습니다.
- 코드 유지보수성 향상: 설정 값들이 코드에 직접 박혀 있지 않으므로 코드가 더 깔끔하고 유지보수하기 쉬워집니다.
- 보안 강화: API 키나 비밀번호와 같은 중요한 정보는 코드에 직접 저장하지 않고 환경변수로 관리하여 보안을 강화할 수 있습니다.
마치며
이제 env-cmd를 사용하여 React 앱의 환경변수를 체계적으로 관리하는 방법을 알게 되었습니다. 이 방법을 사용하면 개발, 로컬, 운영 환경에 따라 설정 값을 쉽게 변경할 수 있고, 코드의 유지보수성과 보안성도 높일 수 있습니다.
'Framework > React' 카테고리의 다른 글
| [React] React 최적화의 열쇠 🔑, useCallback 언제 어떻게 써야 할까? (1) | 2025.04.16 |
|---|---|
| [React] React 시간 관련 무한 루프 버그 해결기 (0) | 2025.04.16 |
| [React] useState setState 타입 설정 (0) | 2025.04.03 |
| 이벤트 전달 방지 e.stopPropagation() (0) | 2025.02.12 |
| [React] useMutation 콜백 옵션(isSuccess에서 variables 등등까지) (0) | 2025.02.04 |








