
React로 프로젝트를 만들 때 가장 먼저 고민하는 것은 프로젝트 구조와 개발 환경 구성이다.
특히 Vite와 TypeScript를 함께 쓰면 빌드 속도도 빠르고,
타입 안정성도 챙길 수 있어 훨씬 쾌적한 개발이 가능하다.
오늘은 React 프로젝트 구조를 어떻게 잡을 수 있는지,
그리고 Vite + TypeScript를 어떻게 설정하는지 학습을 하였다.
React 프로젝트는 파일이 많아질수록 폴더 구조가 중요해진다.
아래는 내가 자주 사용하는 구조 예시다:
src/
├── assets/ # 이미지, 폰트 등 정적 파일
├── components/ # 재사용 가능한 컴포넌트
├── pages/ # 라우트 단위의 페이지 컴포넌트
├── hooks/ # 커스텀 훅
├── utils/ # 유틸 함수
├── types/ # 타입 정의
├── services/ # API 호출 관련 함수
├── App.tsx # 최상위 컴포넌트
├── main.tsx # 진입점
Vite 는 CRA보다 훨씬 빠르게 실행되며, 기본 설정도 간편하다.
TypeScript 도 공식 지원하므로 함께 설정하는 게 좋다.
npm create vite@latest my-react-app -- --template react-ts
cd my-react-app
npm install
--template react-ts 옵션으로 TypeScript + React 설정이 한 번에 끝난다.
기본 구조는 이렇게 생겼다:
my-react-app/
├── public/
├── src/
│ ├── App.tsx
│ ├── main.tsx
│ └── vite-env.d.ts
├── index.html
├── tsconfig.json
├── vite.config.ts
src 폴더 안에 필요한 디렉토리들 (components, pages, hooks 등)을 추가하며 구조를 잡아나가면 된다.
타입스크립트 관련 옵션들을 설정할 수 있다.
예시:
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"jsx": "react-jsx",
"baseUrl": "./src",
"paths": {
"@components/*": ["components/*"],
"@pages/*": ["pages/*"]
},
"strict": true,
"moduleResolution": "node"
}
}
baseUrl과 paths를 설정하면 상대경로 대신
@components/, @pages/처럼 절대경로로 import할 수 있어 코드 가독성이 높아진다.
Vite 설정 파일이며, alias를 설정해두면 유용하다.
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
'@components': path.resolve(__dirname, './src/components'),
'@pages': path.resolve(__dirname, './src/pages')
}
}
})
tsconfig.json과 vite.config.ts에서 alias를 설정하면 import 경로를 깔끔하게 관리할 수 있다.