개발 환경에서 아직 API가 제공되지 않는 상황에서 로컬 환경에서는 목업 데이터를 반환하고, 실제 프로덕션 환경에서는 API로부터 데이터를 받을 수 있도록 Vite의 환경 변수와 모드를 다르게 구성하기 위하여 vite의 환경 변수와 모드를 사용하였습니다.
Vite의 환경 변수를 사용하면 애플리케이션에서 필요한 값을 동적으로 지정할 수 있기때문에 현재와 같이 동적으로 구성하기 위한 환경에 적합하다고 판단하였습니다. .env
파일을 사용하여 환경 변수를 정의하고 로드할 수 있습니다. .env
파일에 설정된 환경 변수를 읽어오기 위해 import.meta.env
객체에 접근할 수 있습니다.
.env
파일 생성.env
파일을 생성.env
파일은 환경 변수를 KEY=VALUE
형식으로 정의.env
파일에 필요한 환경 변수를 정의
VITE_API_KEY=yourapikey
와 같이 환경 변수를 설정
.env
파일:
- .env
파일은 프로젝트의 루트 디렉토리에 생성되며 환경 변수의 값을 설정하기 위해 사용합니다.
- .env
파일명:
jsxCopy code
.env # 모든 경우에 로드됨
.env.local # 모든 경우에 로드되지만 Git에서는 무시됨
.env.[mode] # 지정한 모드에서만 로드됨
.env.[mode].local # 지정한 모드에서만 로드되지만 Git에서는 무시됨
.env
파일 예시:
jsxCopy code
VARIABLE_NAME=value
API_URL=https://api.example.com
SET VITE_DUMMY_FETCH=true
import.meta.env
객체를 통해 환경 변수에 접근가능const apiKey = import.meta.env.VITE_API_KEY;
와 같이 환경 변수 값을 취득 가능import.meta.env
가 제공하는 대표적인 속성import.meta.env.MODE
: {string} 애플리케이션이 실행 중인 모드입니다.
import.meta.env.BASE_URL
: {string} 애플리케이션이 제공되는 기본 URL입니다.
import.meta.env.PROD
: {boolean} 애플리케이션이 프로덕션 모드로 실행 중인지 여부입니다.
import.meta.env.DEV
: {boolean} 애플리케이션이 개발 모드로 실행 중인지 여부입니다.
import.meta.env.SSR
: {boolean} 애플리케이션이 서버에서 실행 중인지 여부입니다.
import.meta.env
사용 예시:
const dummyApi = (url) => {
// 목업데이터 취득
}
const authApi = (url) => {
// api에서 데이터 취득
}
const selectedAuthApi = import.meta.env.VITE_DUMMY_FETCH === 'true' ? dummyApi : authApi;
const get = async <T = {}>(
url: string,
param: QueryParameter | null,
omitParam: string[] | null = null
) => {
const getUrl = baseUrl + url + appendQueryParam(param, omitParam);
const options = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
};
return await selectedAuthApi(getUrl, options);
};
.env
)에는 민감한 정보(비밀번호, API 키, 암호화된 토큰 등)를 저장하지 않는 것이 좋다.key=value
형식으로 환경 변수를 정의합니다. 키와 값 사이에는 등호(=
)를 사용하며, 공백을 넣지않음.env.local
파일의 환경 변수가 가장 높은 우선순위import.meta.env.MODE
가 "development"
로 설정됩니다.import.meta.env.MODE
가 "production"
으로 설정됩니다..env.staging
파일의 환경 변수를 사용하여 실행