Balance-Book 개발기 (14) - 환경별 로고 & Favicon 분기 처리 ✨
Balance-Book 개발기 (14) - 환경별 로고 & Favicon 분기 처리 ✨
개발(dev/preview)과 운영(prod) 환경에 따라 메인 로고와 favicon을 다르게 표시하도록 개선했다.
NODE_ENV + VERCEL_ENV 값을 함께 확인하는 방식으로 분기를 구현. 🛠️
1️⃣ 환경 변수 설명
- NODE_ENV
- React 기본 빌드 모드
development: 로컬 개발 시production: Vercel 배포 시 (Preview, Production 모두 동일하게production)
- VERCEL_ENV
- Vercel이 제공하는 배포 환경 구분 값
development: 로컬 dev 서버 (vercel dev)preview: Git 브랜치 Preview 배포 (예:dev,feature/*)production: main 브랜치 → 운영 배포
👉 따라서 정확한 분기를 위해 NODE_ENV와 VERCEL_ENV를 동시에 확인해야 한다.
2️⃣ 수정/추가한 파일
frontend/src/utils/env.jsfrontend/src/App.jsxfrontend/src/Home.jsxfrontend/public/wallet_dev.svg(dev 전용 로고)frontend/public/favicon_wallet_dev.ico(dev 전용 파비콘)
3️⃣ 주요 코드
utils/env.js
1
2
3
4
5
6
7
8
9
10
11
12
export const getNodeEnv = () => process.env.NODE_ENV;
export const getVercelEnv = () => process.env.VERCEL_ENV;
export function setFavicon() {
const link = document.querySelector("link[rel='icon']") || document.createElement("link");
link.rel = "icon";
link.href =
getNodeEnv() === "production" && getVercelEnv() === "production"
? "/favicon_wallet.ico"
: "/favicon_wallet_dev.ico";
document.head.appendChild(link);
}
App.jsx
1
2
3
4
5
6
7
8
9
10
11
12
import { useEffect } from "react";
import { setFavicon } from "./utils/env";
function App() {
useEffect(() => {
setFavicon(); // 앱 시작 시 환경별 favicon 자동 세팅
}, []);
return <div>{/* ... */}</div>;
}
export default App;
Home.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { getNodeEnv, getVercelEnv } from './utils/env';
const walletLogo =
getNodeEnv() === "production" && getVercelEnv() === "production"
? "/wallet.svg"
: "/wallet_dev.svg";
const Home = ({ user }) => (
<div>
<img src={walletLogo} alt="Wallet Logo" />
</div>
);
export default Home;
4️⃣ 적용 결과
This post is licensed under CC BY 4.0 by the author.

