누구나 로고
オンライン講座企業・団体研修ライブラリトレンドインサイト無料コースお知らせお問い合わせ採用サイト
모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.
로그인무료 회원가입
강좌리액트 입문 — 컴포넌트로 만드는 웹23강

23강 / 전체 28강

리스트·상세 페이지 연결

4분 읽기 조회 0

환경변수(.env) 설정 방법과 Vite 빌드 최적화 원리, 그리고 Vercel·Netlify에 배포하는 전체 과정을 단계별로 배웁니다.

🔐 환경변수 — 비밀값을 코드 밖으로

API 키, 데이터베이스 URL 같은 민감한 정보는 코드에 직접 넣으면 안 됩니다. GitHub에 올라가면 누구나 볼 수 있습니다. 환경변수(.env 파일)를 사용해 비밀값을 분리합니다.

// .env (프로젝트 루트)
VITE_API_URL=https://api.example.com
VITE_KAKAO_MAP_KEY=abcdef1234567890

// .env.local (로컬 개발 전용, .gitignore에 추가)
VITE_SECRET_KEY=my-local-secret

Vite에서는 환경변수 이름이 반드시 VITE_로 시작해야 클라이언트(브라우저)에서 접근 가능합니다. 보안상 VITE_ 없는 변수는 빌드에 포함되지 않습니다.

⚙️ 환경변수 사용 및 타입 처리

// 코드에서 사용
const apiUrl = import.meta.env.VITE_API_URL

async function fetchData() {
  const res = await fetch(`${apiUrl}/posts`)
  return res.json()
}

// TypeScript 타입 선언 (vite-env.d.ts)
interface ImportMetaEnv {
  readonly VITE_API_URL: string
  readonly VITE_KAKAO_MAP_KEY: string
}

interface ImportMeta {
  readonly env: ImportMetaEnv
}

🏗️ 빌드 최적화 이해하기

npm run build를 실행하면 Vite가 최적화된 프로덕션 파일을 생성합니다:

  • 트리 쉐이킹(Tree Shaking): 사용하지 않는 코드를 자동으로 제거합니다. 라이브러리를 불러와도 실제 쓰는 부분만 번들에 포함됩니다.
  • 코드 분할(Code Splitting): lazy()로 가져온 컴포넌트는 별도 청크 파일로 분리됩니다.
  • 미니파이(Minify): 공백, 주석 제거, 변수명 단축으로 파일 크기를 줄입니다.
npm run build   # dist/ 폴더에 프로덕션 파일 생성
npm run preview # 로컬에서 프로덕션 빌드 미리보기

빌드 결과 확인:

  • dist/index.html: 진입점 HTML
  • dist/assets/*.js: 분할된 JS 청크 파일들 (해시 포함 — 캐시 무효화 자동)
  • dist/assets/*.css: 번들된 CSS

🚀 Vercel 배포

Vercel은 프론트엔드 앱 배포에 가장 빠른 방법입니다.

방법 1 — GitHub 연동 (권장):

  1. vercel.com에서 GitHub으로 로그인
  2. "New Project" → 리포지토리 선택
  3. Vite를 자동 감지해 빌드 설정이 자동 입력됩니다: npm run build, 출력 폴더 dist
  4. 환경변수 추가: Settings → Environment Variables → VITE_API_URL 등 입력
  5. Deploy 클릭 → 1~2분 후 URL 제공

이후 main 브랜치에 push할 때마다 자동 배포됩니다.

방법 2 — CLI:

npm i -g vercel
npm run build   # 먼저 빌드
vercel --prod   # 프로덕션 배포

🌐 Netlify 배포 (대안)

npm install -g netlify-cli
npm run build
netlify deploy --prod --dir=dist

⚠️ SPA 라우팅과 404 문제

SPA를 배포하면 /posts/123 같은 URL을 직접 입력하거나 새로고침하면 404가 뜹니다. 서버가 해당 파일을 찾지 못하기 때문입니다. 모든 경로를 index.html로 보내도록 설정합니다:

// vercel.json
{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}

// _redirects (Netlify)
/* /index.html 200

✅ 정리

  • 환경변수: .env 파일 + VITE_ 접두사. import.meta.env.VITE_XXX로 접근.
  • 빌드: npm run build → dist/ 폴더. 트리쉐이킹, 코드분할, 미니파이 자동.
  • Vercel 배포: GitHub 연동이 가장 편리. 환경변수는 Vercel 설정에 별도 입력.
  • SPA 배포 후 새로고침 404: vercel.json에 rewrite 규칙 추가.

관련 주제

  • URL 파라미터
  • useParams
  • 목록에서 상세 페이지 이동
  • 네비게이션 패턴
  • 개발·프로그래밍
  • 개발·프로그래밍 강의
  • 리액트 입문 — 컴포넌트로 만드는 웹
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나
이전 22강스타일링 방법들다음 24강 비동기 상태 관리 패턴

댓글

0/1000

불러오는 중...

목차

  1. 1.리액트란 무엇인가
  2. 2.개발 환경 만들기 — Vite
  3. 3.JSX 기초
  4. 4.컴포넌트 만들기
  5. 5.Props로 데이터 전달
  6. 6.State와 useState
  7. 7.이벤트 처리
  8. 8.조건부 렌더링
  9. 9.리스트 렌더링과 key
  10. 10.폼 다루기
  11. 11.useEffect 기초
  12. 12.데이터 가져오기(fetch)
  13. 13.상태 끌어올리기
  14. 14.컴포넌트 합성과 재사용
  15. 15.useRef와 DOM 접근
  16. 16.커스텀 훅 만들기
  17. 17.Context API
  18. 18.useReducer
  19. 19.리스트 앱 실전 ①
  20. 20.리스트 앱 실전 ②
  21. 21.라우팅 — React Router
  22. 22.스타일링 방법들
  23. 23.리스트·상세 페이지 연결
  24. 24.비동기 상태 관리 패턴
  25. 25.성능 기초 — memo
  26. 26.에러 처리와 경계
  27. 27.환경변수와 빌드
  28. 28.배포하기

カスタマーサポート

  • お知らせ
  • よくある質問
  • お問い合わせ
  • コミュニティ

ご利用案内

  • 利用規約
  • プライバシーポリシー
  • 返金ポリシー

サービス

  • 会社紹介
  • 新規登録
  • 新着コース
  • 無料コース
누구나 로고
利用規約プライバシーポリシー返金ポリシー

상호명: NUGUNA  |  대표자: 정우진  |  사업자등록번호: 392-32-01817  |  통신판매업신고: 제 2026-서울양천-0564 호

주소: 서울특별시 양천구 목동서로 100  |  이메일: nugunapass@gmail.com  |  전화: 010-6395-3043

© 2026 NUGUNA. All rights reserved.

KB예금주인증관리자
ホームコースライブラリお問い合わせMY