npx create-react-app {project_name} --template typescript

boiler-plate라고 하는 기본 소스 코드를 내려 받고 node_module을 설치하고
프로젝트에서 사용하는 react, react-dom, react-script도구를 함께 설치한다.
설치가 완료된 후 프로젝트를 조작하는 가이드를 안내한다.

npm run
프로젝트에서 사용할 수 있는 명령어

npm run start
개발 서버를 실행시키는 명령어

npm create vite@latest book-store-v -- --template react-ts

npm i
프로젝트에 필요한 파일 및 라이브러리 설치

npm run
프로젝트에서 사용할 수 있는 명령어

dev명령어를 사용하여 프로젝트를 실행npm run dev


| 항목 | Create React App (CRA) | Vite |
|---|---|---|
| 개요 | 초기 설정과 구성을 자동화하여 리액트 앱을 빠르게 생성할 수 있도록 지원 | 빠른 속도와 효율성을 강조하며 최신 개발 환경을 제공 |
| 개발 언어 | Node.js | Golang |
| 번들러 | Webpack과 Babel을 사용하여 코드 컴파일 및 압축 처리 | ESBuild와 Rollup을 사용하여 모듈 빌드, 빠른 속도 |
| 개발 서버 | Express 서버 | Koa 서버 |
| 빌드 방식 | 전체 소스를 빌드하여 결과물을 생성 | 모듈 단위 빌드로 필요한 모듈만 빠르게 빌드 |
| 환경 변수 사용 | process.env.KEY 형식으로 환경 변수 관리 | import.meta.env.KEY 형식으로 환경 변수 관리 |
| HMR (Hot Module Replacement) | HMR을 지원하여 코드 변경 사항을 즉시 반영 | 더욱 빠른 HMR을 지원, 변경 사항을 모듈 단위로 즉시 반영 |
| 타입스크립트 지원 | Babel을 통해 TypeScript 코드를 브라우저에서 동작하도록 컴파일 | ESBuild를 통해 빠르게 TypeScript를 지원 |
| 기타 특징 | CRA는 전통적인 Webpack 기반으로 모든 코드를 한 번에 빌드하고 압축함 | Vite는 ESM 기반으로 필요한 모듈만 빠르게 로드하여 성능이 우수 |
App.tsx는 book store라는 텍스트를 렌더링한다.

테스트 코드에서 npm run test명령어를 사용하여 book store를 테스트하면

테스트가 성공되어 표시하는 PASS라는 문구를 확인할 수 있다.

book store라는 텍스트가 적힌 컴포넌트를 Home이라는 네임으로 생성Home이라는 네임으로 호출할 수 있도록 내보내기 설정
Home 컴포넌트가 위치한 물리적 경로를 명시Home 컴포넌트를 응답 


대표 Element가 없다면
<> </> (Fragment)로 감싸줄 수 있다.

예시:
예시:
날짜 형식 변환 함수: formatDate(date: Date): string숫자 포맷팅 함수: formatNumber(number: number): string로컬 스토리지 관리 함수: getFromLocalStorage(key: string): any--- 사용자 정의 리액트 훅(Custom Hooks)
예시:
User 타입 정의: interface User { id: number; name: string; email: string }Product 타입 정의: interface Product { id: number; name: string; price: number }
npm run startnpm run build



build 폴더 이하의 static 폴더를 포함한 기타 파일들을
static hoisting을 이용하여 배포하면
React SPA앱을 바로 실행할 수 있다.
npm run testnpm run eject


"typecheck": "tsc --noEmit --skipLibCheck"
tsc : type script compilenoEmit : 출력하는 부분을 비활성화(타입 체크로만 사용하기 때문)skipLibCheck : 외부 라이브러리의 타입 체크를 생략타입 스크립트는 브라우저에서 작동하지 않기에 컴파일이 필요.
컴파일에 대한 설정

"targer":"es5""lib":{...}