Skip to Content
WebReactReact 기초03. Vite로 bookshelf 프로젝트 만들기

이번 편의 결과물: bookshelf/ 프로젝트가 로컬에서 npm run dev로 실행되는 빈 화면. · 다루는 개념: npm create vite로 프로젝트 생성, 생성된 폴더 구조 읽기, dev/build 스크립트, App.jsx를 지우고 빈 화면 만들기

이 편에서 만드는 파일

bookshelf/ (+) ├── index.html (+) ├── package.json (+) ├── vite.config.js (+) └── src/ ├── main.jsx (+) ├── App.jsx (~ 내용을 지워 빈 화면으로) ├── index.css (+) └── data/ └── books.seed.json (+)

개념 정리

Vite가 하는 일

Vite는 개발 서버와 빌드 도구입니다. 소스 코드를 브라우저가 바로 이해할 수 있게 변환(JSX → JS, 최신 문법 처리)하고, 코드를 고치면 브라우저를 새로고침하지 않아도 바뀐 부분만 반영합니다(HMR, Hot Module Replacement). npm create vite는 이런 설정이 이미 끝난 프로젝트 템플릿을 만들어 줍니다.

생성되는 폴더 구조

경로역할
index.html앱의 유일한 HTML 문서. <div id="root">에 React가 화면을 그린다
src/main.jsx진입점. App 컴포넌트를 #root에 렌더링한다
src/App.jsx최상위 컴포넌트. 이 과목 내내 여기서부터 화면을 구성한다
src/index.css전역 스타일
package.json의존 패키지 목록과 dev/build/preview 스크립트
vite.config.jsVite 설정(React 플러그인 등록)

package.json 스크립트

스크립트역할
npm run dev개발 서버 실행(HMR 지원, 로컬에서만 접근 가능)
npm run build배포용 정적 파일을 dist/에 생성
npm run previewbuild 결과물을 로컬에서 미리 확인

이 과목은 이 시점 기준 React 19.3.0, Vite 8.3.0을 기준으로 합니다. npm create vite를 실행한 시점에 더 새 버전이 설치되면 그 버전을 그대로 사용합니다.

실습

1. 프로젝트 생성

원하는 작업 폴더(예: 다른 실습 폴더와 나란한 위치)에서 실행합니다.

npm create vite@latest bookshelf -- --template react

터미널에 프레임워크를 물으면 이미 --template react로 지정했으므로 추가 질문 없이 바로 생성됩니다.

2. 의존 패키지 설치와 실행

cd bookshelf npm install npm run dev

터미널에 뜬 주소(기본값 http://localhost:5173)를 브라우저에서 엽니다. Vite 기본 데모 화면(React 로고, 카운터 버튼)이 보이면 정상입니다.

3. App.jsx를 비워 빈 화면 만들기

src/App.jsx를 아래 내용으로 바꿉니다. 다음 편(04편)부터 이 자리에 책 카드를 만듭니다.

// src/App.jsx function App() { return ( <div className="app"> <h1>bookshelf</h1> </div> ); } export default App;

기본 템플릿이 만든 src/App.css는 이 과목에서 쓰지 않으므로 App.jsximport './App.css' 줄이 남아 있다면 지웁니다.

4. 데이터 시드 내려받기

bookshelf는 실제 책 데이터를 여섯 권 담은 시드 파일로 시작합니다. src/data/ 폴더를 만들고 아래 주소의 내용을 books.seed.json으로 저장합니다.

mkdir src/data curl -o src/data/books.seed.json https://zeno.it.kr/practice/bookshelf/books.seed.json

curl을 쓸 수 없는 환경이면 브라우저로 주소를 열어 전체 내용을 복사한 뒤 src/data/books.seed.json 파일을 새로 만들어 붙여넣습니다. 저장된 파일의 앞부분은 아래와 같아야 합니다.

// src/data/books.seed.json (일부) [ { "id": 1, "title": "클린 코드", "author": "로버트 C. 마틴", "status": "done", "rating": 5, "pages": 584, "coverColor": "#2563eb", "startedAt": "2026-07-01", "finishedAt": "2026-07-20", "memo": "함수는 한 가지 일만." } ]

이 파일은 6권의 책 객체 배열입니다. 각 책은 id, title, author, status(wish|reading|done), rating, pages, coverColor, startedAt, finishedAt, memo 필드를 가집니다. 이 필드 구성은 이 과목 마지막 편까지 그대로 유지됩니다.

5. 다시 실행

npm run dev

확인

  • 터미널에 Local: http://localhost:5173/ 형태의 주소가 출력됩니다.
  • 브라우저에서 그 주소를 열면 “bookshelf” 제목만 있는 빈 화면이 보입니다.
  • src/data/books.seed.json이 존재하고 6개의 책 객체가 담긴 배열인지 에디터에서 확인합니다.
  • 터미널에서 Ctrl + C로 개발 서버를 멈출 수 있습니다.

직접 해보기

  1. npm run build를 실행해 dist/ 폴더가 생기는지 확인합니다.
  2. npm run preview로 빌드 결과물이 개발 서버와 같은 화면을 보여주는지 확인합니다.

정답 보기

npm run build npm run preview

npm run builddist/index.htmldist/assets/ 아래 번들 파일을 생성합니다. npm run preview는 그 dist/ 폴더를 정적 서버로 띄워, 개발 서버(npm run dev)와 같은 화면이 나오는지 확인할 수 있게 합니다. 실제 배포 시에는 dist/ 폴더만 서버에 올립니다.

자주 하는 실수

증상원인고치는 법
npm create vite 실행 후 폴더가 안 보임다른 위치에서 실행함실행 전 pwd(또는 cd)로 현재 위치를 확인한다
npm run dev 실행 시 Missing script: "dev"bookshelf 폴더 밖에서 명령 실행cd bookshelf 후 다시 실행한다
브라우저에 흰 화면만 보임src/main.jsx#root를 못 찾거나 콘솔 에러 발생브라우저 개발자도구 콘솔에서 에러 메시지를 확인한다
books.seed.json이 HTML 페이지 내용으로 저장됨curl이 리다이렉트나 오류 페이지를 그대로 받음저장된 파일을 열어 [로 시작하는 JSON 배열인지 확인 후 다시 받는다

확인 문제

문제 14지선다
npm create vite@latest bookshelf -- --template react 명령이 하는 일은?
문제 24지선다
npm run dev와 npm run build의 차이로 옳은 것은?
문제 34지선다
src/main.jsx의 역할로 가장 적절한 것은?
문제 44지선다
이 과목에서 books.seed.json을 두는 위치는?

참고 자료

Last updated on