React์ Vite ํ๋ก์ ํธ๋ฅผ ์์์ ์ํ ์ ํ ํ๊ธฐ
1. React + Vite ํ๋ก์ ํธ ์์ฑ
npm create vite@latest ํ๋ก์ ํธ๋ช
--template react
* * React + Typescript + Vite ํ๋ก์ ํธ ์์ฑ
npm create vite@latest ํ๋ก์ ํธ๋ช
--template react-ts
2. ํ๋ก์ ํธ ํด๋๋ก ์ด๋
cd ํ๋ก์ ํธ๋ช
3. ํ์ํ ํจํค์ง ์ค์น
npm install
4. ๊ฐ๋ฐ ์๋ฒ ์คํ
npm run dev
๐ Vite๋ฅผ ์ฌ์ฉํ ์ด์
Vite๋ฅผ ํ๋ก์ ํธ์ ์ฌ์ฉํ ์ด์ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ด๋ค. Vite๋ ํนํ ์ด๊ธฐ ๋ก๋ฉ๊ณผ ์ค์๊ฐ ๊ฐ๋ฐ์์ ํ์ํ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ, ์ด๋ฌํ ์ฅ์ ์ด ํ๋ก์ ํธ ์งํ์ ์ํํ๊ฒ ๋ง๋ค์ด์ค๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์์ Vite๋ฅผ ์ ํํ๋ค.
- ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ ์์: Vite๋ ๋ชจ๋ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ํ์ผ๋ง ๋ก๋ฉํ๋ฏ๋ก, ๊ฐ๋ฐ ์๋ฒ๊ฐ ์ฆ์ ์์๋๋ค. ํนํ ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ด๋ฌํ ๋น ๋ฅธ ๋ก๋ฉ ์๋๋ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ ๋ค. ๊ฐ๋ฐ ์ด๊ธฐ๋ถํฐ ๋น ๋ฅด๊ฒ ํ ์คํธํ๊ณ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์์ด ๊ฐ๋ฐ ์๋๊ฐ ํฅ์๋๋ค.
- ํจ์จ์ ์ธ Hot Module Replacement (HMR): Vite๋ ๋ณ๊ฒฝ๋ ๋ชจ๋๋ง ๊ฐฑ์ ํ๋ ๋ฐฉ์์ HMR์ ์ง์ํ์ฌ, ์ฝ๋ ์์ ํ ์ฆ๊ฐ์ ์ผ๋ก ํ๋ฉด์ ๋ฐ์๋๋ค. ์ด๋ก ์ธํด ์ฝ๋ ์์ ์ฌํญ์ ์ค์๊ฐ์ผ๋ก ํ์ธํ๋ฉฐ ๊ฐ๋ฐํ ์ ์์ด ์์ ํจ์จ์ฑ์ด ๋์์ง๋ค.
- ์ต์ ํ๋ ๋น๋: Vite๋ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๋น๋ ํ๊ฒฝ์ ๊ฐ๊ฐ ์ต์ ํํ์ฌ ์ฌ์ฉํ๋ค. ๊ฐ๋ฐ ์ค์๋ ESM(ES ๋ชจ๋)์ ์ฌ์ฉํ๊ณ , ์ต์ข ๋น๋ ์์๋ Rollup์ ํตํด ๋ฒ๋ค๋ง์ ์ต์ ํํ์ฌ ์ฑ๋ฅ ์ข์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค ์ ์๋ค.
- ์ค์ ์ ๊ฐ๋จํจ๊ณผ ์ ์ฐ์ฑ: Vite๋ ์ค์ ์ด ๊ฐ๋จํด ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ์ ์์ํ ์ ์๋๋ก ๋๋๋ค. vite.config.js๋ฅผ ํตํด ํ์ํ ์ค์ ์ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, React์ ๊ฐ์ ํ๋ ์์ํฌ์๋ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋์ด ์ถ๊ฐ ์ค์ ์์ด๋ ๊ฐ๋ฐ์ ์งํํ๊ธฐ ์ฉ์ดํ๋ค.
์ด๋ฌํ ์ด์ ๋ก Vite๋ ํ๋ก์ ํธ์์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ง์ํ๋ฉฐ, ์ด๊ธฐ ๋ก๋ฉ๋ถํฐ ๋น๋๊น์ง ๊ฐ๋ฐ์๊ฐ ์ํ๋ ์ฑ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ค. Vite๋ฅผ ํตํด ์์ฐ์ฑ์ ๋์ด๊ณ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋ ๊ฒ์ด ์ฃผ์ ๋ชฉ์ ์ด์๋ค.
๐ ๊ธฐํ ๋ค๋ฅธ ๋ฒ๋ค๋ฌ ๋๊ตฌ๋ค
- Webpack:
- ์ค๋ช : JavaScript ์ํ๊ณ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฒ๋ค๋ฌ๋ก, ๋ค์ํ ํ๋ฌ๊ทธ์ธ๊ณผ ์ค์ ์ต์ ์ ์ ๊ณตํด ์ปค์คํฐ๋ง์ด์ง์ด ์ฉ์ดํ๋ค.
- ์ฅ์ : ๋ฐฉ๋ํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ, ๋์ ํธํ์ฑ, ์ ์ฐํ ์ค์ . ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํ๋ค.
- ๋จ์ : ์ค์ ์ด ๋ณต์กํ๊ณ , ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ฉฐ, HMR ์๋๊ฐ Vite๋ณด๋ค ๋ค์ ๋๋ฆด ์ ์๋ค.
- ์ถ์ฒ ์ํฉ: ์ปค์คํ ์ค์ ์ด ๋ณต์กํ๊ฒ ํ์ํ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ๋ฆฌํ๋ค.
- Parcel:
- ์ค๋ช : Parcel์ ์ค์ ์ด ๊ฑฐ์ ํ์ํ์ง ์์ ๋ฒ๋ค๋ฌ๋ก, ‘์ ๋ก ์ค์ ’์ ๊ฐ์กฐํ๋ฉฐ ์๋ ์ต์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ฅ์ : ์ด๋ณด์๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ๋น ๋ฅธ ๋น๋ ๋ฐ HMR์ ์ง์ํด ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ธ๋ค.
- ๋จ์ : ํ๋ฌ๊ทธ์ธ๊ณผ ์ค์ ๋ฉด์์๋ Webpack์ด๋ Vite์ ๋นํด ํ๊ณ๊ฐ ์์ ์ ์๋ค.
- ์ถ์ฒ ์ํฉ: ์ค์ ์์ด ๋น ๋ฅด๊ฒ ์์ํ ์ ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์ด ํ์ํ ํ๋ก์ ํธ์ ์ ํฉํ๋ค.
- Snowpack:
- ์ค๋ช : Snowpack์ Vite์ ์ ์ฌํ๊ฒ ESM์ ํ์ฉํด ํ์ํ ๋ชจ๋๋ง ๋ก๋ํ์ฌ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ธ๋ค.
- ์ฅ์ : ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ ์์ ๋ฐ HMR, ๋ชจ๋ ์บ์ฑ ๊ธฐ๋ฅ์ด ๋ฐ์ด๋๋ค. Vite์ ๋น์ทํ ๋ชจ๋ ๊ธฐ๋ฐ ๋ฐฉ์์ด๋ผ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ๋จ์ : ์ต๊ทผ ์ ๋ฐ์ดํธ ๋น๋๊ฐ ์ค์ด๋ค๋ฉด์ Vite๋งํผ ํ๋ฐํ ์ฌ์ฉ๋์ง ์๋ ํธ์ด๋ค.
- ์ถ์ฒ ์ํฉ: Vite์ ๋์ฒด๋ก ๊ณ ๋ คํ ๋งํ์ง๋ง, ์ํ๊ณ์ ์ ๋ฐ์ดํธ๊ฐ ํ๋ฐํ ์ต์ ํ๋ก์ ํธ์์๋ Vite๊ฐ ๋ ๋์ ์ ํ์ผ ์ ์๋ค.
- esbuild:
- ์ค๋ช : esbuild๋ ์ด๊ณ ์ JavaScript ๋ฒ๋ค๋ฌ๋ก, Go ์ธ์ด๋ก ์์ฑ๋์ด ๋งค์ฐ ๋น ๋ฅธ ๋น๋ ์๋๋ฅผ ์ ๊ณตํ๋ค.
- ์ฅ์ : ๋น๋ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ฉฐ, ๋ง์ ํ๋ก์ ํธ์์ ๋ฏธ๋ค์จ์ด๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉ๋๋ค.
- ๋จ์ : ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ์ ์ธ ๋ฒ๋ค๋ง์ ์ง์ค๋์ด ์์ด, ๋ณต์กํ ์ค์ ์ ๋ค๋ฃจ๊ธฐ์๋ ๋ค์ ํ๊ณ๊ฐ ์๋ค.
- ์ถ์ฒ ์ํฉ: ๋น๋ ์๋๊ฐ ๋งค์ฐ ์ค์ํ ํ๋ก์ ํธ์์, ๋ฒ๋ค๋ง ๋ฐ ํธ๋์คํ์ผ๋ง๋ง ํ์ํ ๋ ์ฌ์ฉํ๊ธฐ ์ข๋ค.
์ด์ธ์๋ ํ๋ก์ ํธ์ ํน์ฑ๊ณผ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ Rollup๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค.