SPA를 한 번 빌드해 여러 환경에 띄우기 (런타임 설정)
· 약 2분
API 주소처럼 환경마다 다른 값을, 빌드에 박지 않고 앱이 켜질 때 읽게 만들어 한 번 빌드로 여러 환경에 배포하는 방법을 정리합니다.
결론부터 말하면, 환경별 값은 빌드에 박지 말고, 앱이 켜질 때 읽는 런타임 설정 파일로 분리합니다. 그러면 앱은 한 번만 빌드하고, 설정 파일만 환경에 맞게 갈아 끼우면 됩니다.
빌드타임 주입과 런타임 주입, 무엇이 다른가
차이는 환경별 값을 언제 결정하느냐입니다. 빌드타임 주입은 빌드할 때 값을 코드에 박아 넣고, 런타임 주입은 앱이 브라우저에서 켜질 때 값을 읽습니다.
| 구분 | 빌드타임 주입 | 런타임 주입 |
|---|---|---|
| 값이 정해지는 시점 | 빌드할 때 | 앱이 켜질 때 |
| 환경이 N개면 | N번 빌드 | 한 번 빌드 + 설정 N개 |
| 대표 예 | import.meta.env.VITE_* | window.__ENV__ |
빌드타임 주입(VITE_*, REACT_APP_* 등)은 편하지만, 값이 결과물에 박혀 버립니다. 환경이 늘면 그만큼 다시 빌드해야 합니다.