[React] CRA๋์ Vite๋ก React ์ค์น ๋ฐ ์คํํ๊ธฐ (TypeScript)
npx create-react-app [ํ๋ก์ ํธ ๋ช
] --template typescript
๊ธฐ์กด์๋ react ์ค์นํ ๋, CRA(Create React App)์ ์ฌ์ฉํ์๋ค.
CRA๋,
๋ฆฌ์กํธ๋ก ์ฑ์ ๋ง๋๋ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.
์์ ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ์๋์ฒ๋ผ ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋๋ค.
webpack, babel, ํ์ ์คํฌ๋ฆฝํธ ์ค์ ๊น์ง ์ ๊ณตํด์ฃผ์ง๋ง ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐฉ์๋๋ก ์ค์ ์ ๋ฐ๊พธ๊ธฐ ์ด๋ ค์ด ๋จ์ ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์๋๊ฐ ๋ ๋๋ ค์ง๋ค.
webpack์ด๋,
ํ๋ก์ ํธ์ ์ฌ์ฉ๋ ํ์ผ์ ๋ถ์ํ์ฌ ๊ธฐ์กด ์น ๋ฌธ์ ํ์ผ๋ก ๋ณํํ๋ ๋๊ตฌ์ด๋ค. (์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ)
ํ๋ ์์ํฌ๊ฐ .js,.css,.jpg์ ๊ฐ์ ๊ธฐ์กด ์น๋ฌธ์ ํ์ผ์ ์ฌ์ฉํ์ง ์๊ณ .sass ๊ฐ์ ํ์ผ๋ก ์์ฑํ๊ธฐ๋ ํ๋๋ฐ, ์น๋ธ๋ผ์ฐ์ ๋ .sass ํ์ผ์ ํด์ํ์ง ๋ชปํ๋ฏ๋ก ์ค๊ฐ์ ๋๊ตฐ๊ฐ ์ด ํ์ผ์ ํด์ํด์ฃผ์ด์ผ ํ๋ค. ๊ทธ ์ญํ ์ ํ๋ ๋๊ตฌ๊ฐ ์นํฉ์ด๋ค.
babel์ด๋,
์๋ฐ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ๋ค. ์ ๋ ฅ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ณ ์ถ๋ ฅ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ค. ์ต์ ๋ฒ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ babel์ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํด์ค๋ค. ES6, ES7 ๋ฑ์ ์ต์ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ ์ฝ๋ฉ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ์ด ํฅ์๋๋ค.
๐ก๊ทธ๋์ CRA ๋์ Vite(๋นํธ)๋ฅผ ์จ์ผํ๋ ์ด์ ๋?
1. CRA์ ์ง์ ์ค๋จ
2. Vite๋ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํํ ๋ ์ฆ์ ํ์ด์ง๋ฅผ ๋ก๋ํ ์ ์๋ค. ์ด๋ ํ์ผ ๋ณ๊ฒฝ ์ ํ์ํ ๋ชจ๋๋ง ๋ค์ ๋น๋ํ๊ธฐ ๋๋ฌธ์ด๋ค. CRA๋ ์ ์ฒด ์ฑ์ ๋ฒ๋ค๋งํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ด ์๋์ ์ผ๋ก ๊ธธ์ด์ง ์ ์๋ค. ์นํฉ๋์ esbuild๋ฅผ ์ฌ์ฉํ์ฌ ๋งค์ฐ ๋น ๋ฅด๋ค.
npm create vite@latest [ํ๋ก์ ํธ ๋ช
] -- --template react-ts
๋๋ฌด๋๋ ๋น ๋ฅด๊ฒ ๋๋๋ฒ๋ ธ๋ค...
์ด๊ธฐ ๊ตฌ์กฐ๋ ์ด๋ ๋ค.
npm install
npm run dev
์คํ ์ํฌ๋, npm start๊ฐ ์๋๋ผ run์ ์ฌ์ฉํ๋ค.
์ฐฝ์ด ๋ฐ๋ก ๋จ์ง ์๊ณ , url๋ก ๋ค์ด๊ฐ์ผํ๋ค. ํฌํธ๊ฐ 3000์ด ์๋์ด์ ์ ๊ธฐํ๋ค.
url๋ก ๋ค์ด๊ฐ๋ฉด ์ด๋ฐ ํ๋ฉด์ ๋ณผ ์ ์๋ค! ๊ทผ๋ฐ ์ง์ง ๋น ๋ฅด๋ค.
๐ง์ค๋ฅ๊ฐ ์ ๋ณด์ด๋ค?
CRA์์ผ๋ฉด ํฐ๋ฏธ๋์ ๊ณ์ ์ค๋ฅ๋ฅผ ๋ฟ์์ํ ๋ฐ, Vite๋ ๊ต์ฅํ ์กฐ์ฉํ๋ค. ํฐ๋ฏธ๋์ ์๋ฌด๊ฒ๋ ์ ์ฐํ๋ค.
CRA๋ Webpack Dev Server๊ฐ ๋ด๋ถ์ ์ผ๋ก ํฐ๋ฏธ๋์ ์ค๋ฅ๋ฅผ ์ถ๋ ฅํ๋๋ก ๊ตฌ์ฑ๋์ด ์์ด์, ๊ฐ๋ฐ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ฆ์ ํฐ๋ฏธ๋์ ํ์๋ฉ๋๋ค. Vite๋ ์ฃผ๋ก ๋ธ๋ผ์ฐ์ ์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ํ์ํ๋๋ก ๋์ด ์์ผ๋ฉฐ, ํฐ๋ฏธ๋์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฅ ๋ก๊ทธ๊ฐ ์ ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
๋ผ๊ณ ์ฑ์งํผํฐ๊ฐ ๋งํด์ฃผ์๋ค.