- [Vue.js] 환경 변수 관리(.env): `--mode` 옵션으로 깔끔하게 해결하는 법2025년 06월 23일 15시 27분 28초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
Vue.js 환경 변수 관리(.env):
--mode옵션으로 깔끔하게 해결하는 법Vue.js 프로젝트에서 개발, 테스트, 배포 등 다양한 환경에 따라 API 엔드포인트나 기타 설정 값을 다르게 지정하는 것은 개발 과정에서 필수적이다. 이 환경 변수를 효율적으로 관리하기 위해 Vue CLI는 강력한
--mode옵션을 제공하고 있다. 이 글에서는 기존에 발생했던cross-env사용 시의 문제점을 짚어보고,--mode옵션을 활용하여 환경 변수를 정확하게 매핑하는 방법을 소개한다.
1.
cross-env사용 시 발생했던 문제점이전에
package.json스크립트에서cross-env를 사용하여VUE_APP_ENV와 같은 환경 변수를 주입하는 방식이 흔하게 사용되었다. 예를 들어, 다음과 같은 설정이다."scripts": { "serve:dev": "cross-env VUE_APP_ENV=dev vue-cli-service serve" }이 방식은
VUE_APP_ENV변수를dev로 설정하는 데는 성공적이었다. 실제로process.env.VUE_APP_ENV를 출력하면dev가 나오는 것을 확인할 수 있었다. 하지만 문제는 Vue CLI가 이 변수 값만으로 원하는.env.dev파일을 정확히 로드하지 못하는 경우가 발생했다는 것이다.Vue CLI는
serve명령어를 실행할 때 기본적으로development모드로 작동하며, 이때.env.development.local또는.env.local같은 파일을 더 높은 우선순위로 로드한다. 따라서cross-env로VUE_APP_ENV=dev를 설정했더라도, 만약 우선순위가 더 높은.env파일에 동일한 이름의 환경 변수(VUE_APP_API_URL등)가 정의되어 있었다면, 그 값이.env.dev파일의 값을 덮어썼던 것이다. 이것이 바로VUE_APP_ENV는dev로 나오는데VUE_APP_API_URL은 다른 값을 가리키는 원인이었다.
2.
--mode옵션으로 명확하게 해결Vue CLI의
--mode옵션은 이러한 혼란을 깔끔하게 해결해 주는 핵심 기능이다. 이 옵션은 Vue CLI에게 어떤 "모드"로 빌드 또는 개발 서버를 실행할지 명확하게 지시하는 역할을 한다.--mode옵션을 사용하면 Vue CLI는 해당 모드 이름과 일치하는.env.[mode]파일을 최우선적으로 찾아 로드하게 된다.2.1.
package.json스크립트 수정 방법이제
package.json의scripts부분을 다음과 같이 수정하면 된다.cross-env는 더 이상 필요하지 않다.{ "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "serve:local": "vue-cli-service serve --mode local", "serve:dev": "vue-cli-service serve --mode dev", "build:local": "vue-cli-service build --mode local", "build:dev": "vue-cli-service build --mode dev" } }cross-env VUE_APP_ENV=...제거: 환경 변수를 설정하는 부분이 사라진 것이 특징이다. Vue CLI가--mode옵션에 따라.env파일을 자동으로 로드하고 변수를 주입하기 때문이다.--mode [모드명]추가:vue-cli-service serve또는vue-cli-service build명령어 뒤에--mode local또는--mode dev를 직접 추가하여 어떤 환경 변수 파일(예:.env.local,.env.dev)을 사용할지 명시한다.
2.2. 사용 예시
이제 각 환경에 맞는 스크립트를 다음과 같이 실행할 수 있다.
- 로컬 환경에서 개발 서버 실행:
npm run serve:local # 또는 yarn serve:local - 개발 서버용 빌드 실행:
npm run build:dev # 또는 yarn build:dev
3.
--mode사용의 이점--mode옵션을 사용하는 것이 더 좋은 이유는 명확하다.- 정확한 환경 변수 로드: Vue CLI가 명시된 모드에 해당하는
.env파일을 최우선으로 로드하므로, 의도한 환경 변수 값이 정확하게 적용된다. - 간결하고 명확한 스크립트:
cross-env와 같은 추가적인 유틸리티 없이 스크립트 자체가 간결해지고, 어떤 환경 파일이 사용되는지 쉽게 파악할 수 있다. - 예측 가능한 동작: Vue CLI의 공식적인 환경 변수 로드 메커니즘을 따르므로,
.env.local이나.env.development같은 다른 파일과의 우선순위 충돌 없이 예측 가능한 결과를 얻을 수 있다.
이러한
--mode옵션 활용법을 통해 Vue.js 프로젝트의 환경 변수 관리를 더욱 효율적이고 안정적으로 수행할 수 있을 것이다.728x90반응형'언어·프레임워크 > Vue.js' 카테고리의 다른 글
[Vue.js] `v-if`와 `<transition>`을 사용하여 동적인 화면을 만드는 방법 (0) 2025.07.03 [Vue.js] 옵션(Options) 방식: 데이터 변경에 따른 리렌더링 완벽 가이드 (0) 2025.07.03 [Vue.js] vue-chartjs에 datalabels 적용 (0) 2024.10.10 [Vue.js] 카운트다운 서클 타이머 버튼 만들기 (0) 2024.10.04 [Vue.js] Bootstrap Autoplaying Carousel 오작동 문제 (0) 2024.09.27 다음글이 없습니다.이전글이 없습니다.댓글