뷰 cli의 실행모드와 환경 변수를 설정하는 방법에 대해 알아봅시다.
참고 링크: Modes and Environment Variables
로컬에서는 http://localhost:3000 을 백엔드 요청 기본 URL로 사용하는데 운영 서버에서는 https://production.com 으로 사용하고 싶어요.
로컬에서는 3000번 포트를 개발서버로 사용하는데, 개발서버 에서는 80번 포트를 사용하고 싶어요.
이 처럼, 실행하는 환경이 다른 경우 1) 모드를 바꿔주고, 2) 모드에 따른 환경변수를 사용할 수 있습니다.
뷰 애플리케이션이 실행되는 모드
를 의미합니다. vue cli에서는 기본적으로 3개의 모드 1) development, 2) production, 3) test가 있습니다. 그리고 사용자가 정의한 모드를 추가
할 수 있습니다.
사용자 정의 모드를 다음과 같이 추가할 수 있습니다.
// 파일 경로: /root/package.json
"scripts": {
// .. 생략
// local 로컬 모드 추가
"local": "vue-cli-service serve --mode local",
// blingbling 제가 임의로 만든 블링블링 모드 입니다.
"blingbling": "vue-cli-service serve --mode blingbling",
// .. 생략
},
다음과 같이 사용자 정의 모드로 실행됩니다.
그리고 모드가 바뀌었다는 의미는 환경 변수 또한 바뀌었다
는 의미입니다.
실행 모드에 따라 선택되는 변수
입니다. 기본적으로 2개의 환경변수 NODE_ENV, BASE_URL 가 있습니다. 그리고 사용자가 정의한 변수를 추가
할 수 있습니다.
환경 변수들은 process.env 객체
에 정의되어 있습니다.
앱이 실행되는 모드입니다. 3개의 기본 모드 "development", "production", "test"가 있습니다. 그리고 사용자 정의 모드를 추가
로 생성할 수 있습니다.
vue.config.js의 publicPath 옵션에 해당하고 앱이 배포되는 기본 경로입니다.
// 파일 경로: /root/.env.local, 그리고 파일은 반드시 루트 디렉토리에 생성해야합니다.
NODE_ENV = "local"
BASE_URL: "/"
VUE_APP_COFFEE = "americano"
사용자 정의 변수 생성은 아주 중요한 규칙
이 있습니다. 다음 규칙을 지키지 않으면 작성해도 인식되지 않습니다.
VUE_APP_생성할 변수 이름 = 넣어줄 값
뷰 프로젝트 어디서나 process.env로 접근 할 수 있습니다.
console.log(process.env)
뷰 프로젝트를 만들고 직접 확인해봅시다.
vue cli 4.x (4버전 이상) 을 사용해서 프로젝트를 생성합니다
// vue create 생성할 프로젝트 이름
vue create env_variable
아직 감이 잘 안올 수 있기 때문에 환경 변수를 출력해서 알아봅시다.
생성한 프로젝트의 App.vue에서 나머지는 지우고 created() 부분을 작성합니다.
<!--경로: /root/src/App.vue-->
<template>
<div id="app">
app.vue
</div>
</template>
<script>
export default {
name: 'App',
created() {
// 환경 변수 출력
console.log(process.env)
}
}
</script>
development 모드의 기본 환경변수가 출력되었습니다.
npm run serve
저는 임의의 블링블링 모드를 만들겠습니다.
// 파일 경로: /root/package.json
"scripts": {
// .. 생략
// blingbling 제가 임의로 만든 블링블링 모드 입니다.
"blingbling": "vue-cli-service serve --mode blingbling",
// .. 생략
},
환경 변수 파일
은 반드시 루트 디렉토리
에 생성해야합니다.
사용자 정의 환경 변수
는 반드시 VUE_APP 으로 시작
해야합니다.
파일 위치: /root/.env.blingbling
NODE_ENV = "blingbling"
BASE_URL: "/"
VUE_APP_NAME = "blingbling"
VUE_APP_PORT = 4000
블링블링 모드 실행
npm run blingbling
루트 경로에 vue.config.js를 생성하고 다음을 작성합니다.
루트 경로는 프로젝트 최상위 위치, package.json이 있는 위치를 의미합니다.
// /root/vue.config.js
module.exports = {
devServer: {
// 사용자 정의 환경 변수에서 VUE_APP_PORT가 있으면 사용하고
// 없으면 3000 포트로 개발서버를 실행합니다.
port: process.env.VUE_APP_PORT || 3000
}
}
블링블링 모드의 VUE_APP_PORT = 4000을 인식해서 4000포트로 개발서버
가 실행되었습니다.
위의 예시와 같이 포트번호 변경, 기본 URL 변경 이외에도 실행 환경에 따라 일부 페이지를 라우터에서 제외
해서 숨길 수 도 있습니다.
이외에도 다른 활용법을 알고 계시다면 댓글로 알려주세요~
vue cli로 프로젝트를 생성하면 .gitignore 파일에서 .env.local 파일은 기본적으로 제외
되어 있습니다.
만약, 로컬 모드를 깃에 올리고 싶다면, 아래 .gitignore 파일에서 다음 내용을 지워주세요.
// 파일 위치: /root/.gitignore
# local env files
.env.local
.env.*.local
.env로 시작하는 환경 변수 파일은 반드시 root 디렉토리에 위치
해야합니다. 그렇지 않으면 인식되지 않습니다.
많이 실수 하십니다.
새로운 환경변수
를 추가할 때는 반드시 VUE_APP 으로 시작
해야합니다. 그렇지 않으면 인식되지 않습니다.
예시) VUE_APP_PORT = 4000
많이 실수 하십니다.