Vite의 --mode는 앱이 어떤 환경 이름으로 동작할지 정하는 옵션이다. 가장 큰 효과는 어떤 .env 파일을 읽을지가 달라진다는 점이다. 기본값은 vite(dev)가 development, vite build가 production이다.
.env # 항상
.env.local # 항상, git에 올리지 않음
.env.[mode] # 해당 mode일 때만
.env.[mode].local # 해당 mode일 때만, git에 올리지 않음 (뒤에 있을수록 우선)vite build --mode staging이면.env.staging이 추가로 읽히고, 코드에서import.meta.env.MODE는"staging"이 된다- 함정: mode는 최적화 수준이 아니다. 압축·트리 셰이킹 같은 프로덕션 최적화는
vite build명령 자체가 한다. staging mode로 빌드해도 최적화는 똑같다 import.meta.env.PROD·DEV는 mode가 아니라NODE_ENV를 따른다.vite build는 기본적으로NODE_ENV를production으로 두기 때문에--mode staging빌드에서도PROD는true다..env.staging에NODE_ENV=development를 직접 적었을 때만 달라진다- 클라이언트 코드에 노출되는 변수는
VITE_접두사가 붙은 것뿐이다. 비밀 값은.local파일에 두고 커밋하지 않는다
환경별 설정을 외부로 빼는 같은 생각은 스프링의 프로파일, 셸의 환경변수 스코프와 source에도 있다. 번들러 전반은 번들러.