์๋ ํ์ธ์, ์น ๊ฐ๋ฐ์ ์ฒซ๋ฐ์ ๋ด๋๋ ์ด๋ณด ๊ฐ๋ฐ์๋๋ค! ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI) ๊ตฌ์ถ์ ์ํ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React(๋ฆฌ์กํธ)๋ฅผ ์ค์นํ๊ณ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ฒ์ ๋ชจ๋ ์ฌ์ ์ ์์์ ๋๋ค. ๊ณผ๊ฑฐ์๋ Create React App(CRA)์ ์ฃผ๋ก ์ฌ์ฉํ์ง๋ง, 2025๋ ํ์ฌ๋ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋๊ตฌ๋ค์ด ๋์ธ์ ๋๋ค. ์ด ๊ฐ์ด๋์์๋ Node.js ์ค์น๋ถํฐ ์์ํ์ฌ, npm์ ํ์ฉํ ์ต์ ๋ฆฌ์กํธ ํ๊ฒฝ ๊ตฌ์ถ ๋ฐฉ๋ฒ, ํนํ ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ Vite(๋นํธ) ์ฌ์ฉ๋ฒ๊น์ง ์์ธํ ์๋ ค๋๋ฆฝ๋๋ค.
๐ ํจ๊ป ์ฝ์ผ๋ฉด ์ข์ ๊ธ
๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ ์, ํต์ฌ์ ์ผ๋ก ํ์ํ ๋ ๊ฐ์ง ๋๊ตฌ, ๋ฐ๋ก Node.js์ npm(Node Package Manager)์ ๋ํด ๋จผ์ ์ดํดํด์ผ ํฉ๋๋ค. npm์ ์๋ง์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจํค์ง๋ค์ ๊ด๋ฆฌํ๊ณ ์ค์นํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋๊ตฌ๋ก, ๋ฆฌ์กํธ ์ค์น์ ํต์ฌ ์ญํ ์ ๋ด๋นํฉ๋๋ค. ์ต์ ๊ฐ๋ฐ ํธ๋ ๋๋ฅผ ๋ฐ์ํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํด ๋ด ์๋ค.
โ ๋ฆฌ์กํธ ์ค์น๋ฅผ ์ํ ํ์ ์ค๋น๋ฌผ Node.js์ npm ํ์ธํ๊ธฐ
๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ Node.js๊ฐ ์์คํ ์ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค. Node.js๋ฅผ ์ค์นํ๋ฉด ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ์ธ npm์ด ์๋์ผ๋ก ํจ๊ป ์ค์น๋ฉ๋๋ค. npm์ ๋ฆฌ์กํธ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: react, react-dom)๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฆฌ์กํธ ์ค์น์ ์ฒซ ๋จ๊ณ๋ ๋ฐ๋ก Node.js์ npm์ ๋ฒ์ ์ ํ์ธํ๋ ๊ฒ์ ๋๋ค.
ํฐ๋ฏธ๋(๋๋ ๋ช ๋ น ํ๋กฌํํธ)์ ์ด๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ํ์ฌ ์ค์น๋ ๋ฒ์ ์ ํ์ธํ์ธ์. ๋ง์ฝ ์ค์น๋์ด ์์ง ์๋ค๋ฉด, Node.js ๊ณต์ ํํ์ด์ง์์ LTS(Long Term Support) ๋ฒ์ ์ ๋ค์ด๋ก๋ํ์ฌ ์ค์นํด์ผ ํฉ๋๋ค. ์์ ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํด LTS ๋ฒ์ ์ ์ค์นํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
node -v npm -v
๋ ๋ช ๋ น์ด ๋ชจ๋ ๋ฒ์ ์ ๋ณด๊ฐ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ค๋ฉด ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์ํ ๊ธฐ๋ณธ ํ๊ฒฝ์ ์ค๋น๋ ๊ฒ์ ๋๋ค. ์ด์ npm์ ์ฌ์ฉํ์ฌ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํํ๋ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์์ต๋๋ค.
๐ 2025๋ ๋ฆฌ์กํธ ํ๊ฒฝ ๊ตฌ์ถ์ ํต์ฌ Vite ์ฌ์ฉ๋ฒ ์์ธ ๋๋ณด๊ธฐ
2024๋ ์ ๊ธฐ์ ์ผ๋ก Create React App(CRA)์ ์ฌ์ฉ์ ํฌ๊ฒ ์ค์์ผ๋ฉฐ, ํ์ฌ๋ Vite์ Next.js๊ฐ ๋ฆฌ์กํธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ ์ฃผ๋ฅ์ ๋๋ค. Vite๋ ๊ฐ๋ฐ ์๋ฒ ๊ตฌ๋ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ณ HMR(Hot Module Replacement) ์ฑ๋ฅ์ด ์ฐ์ํ์ฌ ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฌ๊ฒ ๋์ฌ์ค๋๋ค. ๋ฆฌ์กํธ ์ค์น ์ npm์ ํ์ฉํ์ฌ Vite ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ํ์ฌ ๊ฐ์ฅ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.
Vite๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ npm ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํฐ๋ฏธ๋์์ ์ํ๋ ํด๋๋ก ์ด๋ํ ํ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ์ธ์.
npm create vite@latest
์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋ช ๊ฐ์ง ์ง๋ฌธ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ด ์ง๋ฌธ๋ค์ ๋ํ ๋ต๋ณ์ ํตํด ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ์ค์ ์ ์๋ฃํฉ๋๋ค.
- ํ๋ก์ ํธ ์ด๋ฆ (Project name): ์ํ๋ ํ๋ก์ ํธ ํด๋ ์ด๋ฆ์ ์
๋ ฅํฉ๋๋ค. (์:
my-react-app) - ํ๋ ์์ํฌ ์ ํ (Select a framework): ํ์ดํ ํค๋ฅผ ์ฌ์ฉํ์ฌ React๋ฅผ ์ ํํฉ๋๋ค.
- ๋ณํ ์ ํ (Select a variant): JavaScript ๋๋ TypeScript ์ค ์ํ๋ ์ธ์ด๋ฅผ ์ ํํฉ๋๋ค. ์ด๋ณด์๋ผ๋ฉด JavaScript๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
์ค์ ์ด ์๋ฃ๋๋ฉด, npm์ ํ์ํ ์ด๊ธฐ ํ์ผ์ ์์ฑํ๊ณ , ํ๋ก์ ํธ ํด๋๋ก ์ด๋ํ์ฌ ์์กด์ฑ ํจํค์ง๋ฅผ ์ค์นํ ํ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด 2025๋ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ฆฌ์กํธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ ํต์ฌ์ ๋๋ค.
Vite ํ๋ก์ ํธ ํ์ ๋ช ๋ น์ด ํ์ธํ๊ธฐ
ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ํ์๋ ๋ค์์ ๊ธฐ๋ณธ์ ์ธ npm ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ์งํํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ค์ ๋ชจ๋ ๋ฆฌ์กํธ ๊ฐ๋ฐ์ ๊ธฐ๋ณธ์ด ๋ฉ๋๋ค.
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
cd my-react-app |
์์ฑ๋ ํ๋ก์ ํธ ํด๋๋ก ์ด๋ํฉ๋๋ค. |
npm install |
package.json์ ์ ์๋ ๋ชจ๋ ์์กด์ฑ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. (npm i๋ก ์ถ์ฝ ๊ฐ๋ฅ) |
npm run dev |
๊ฐ๋ฐ ์๋ฒ๋ฅผ ์์ํ๊ณ ๋ธ๋ผ์ฐ์ ์์ ํ๋ก์ ํธ๋ฅผ ํ์ธํ ์ ์๊ฒ ํฉ๋๋ค. |
npm run build |
๋ฐฐํฌ๋ฅผ ์ํ ์ต์ ํ๋ ๋น๋ ํ์ผ์ ์์ฑํฉ๋๋ค. |
ํนํ npm install ๋ช
๋ น์ด๋ ํ๋ก์ ํธ๋ฅผ ์ฒ์ ๋ฐ๊ฑฐ๋, ์๋ก์ด ์์กด์ฑ์ ์ถ๊ฐํ ํ ํ์
ํ ๋ ๋ฐ๋์ ํ์ํ ๋ช
๋ น์ด์
๋๋ค. npm install์ ์คํํด์ผ๋ง ํ๋ก์ ํธ๊ฐ ์ ์์ ์ผ๋ก ๋์ํฉ๋๋ค.
๐ก ๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ npm install ์ฌ์ฉ๋ฒ ์์ธ ๋๋ณด๊ธฐ
๋ฆฌ์กํธ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด, ๋ผ์ฐํ (React Router), ์ํ ๊ด๋ฆฌ(Redux, Zustand), UI ์ปดํฌ๋ํธ(Material UI) ๋ฑ ๋ค์ํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ผ ํ ํ์๊ฐ ์๊น๋๋ค. ์ด๋๋ ์ญ์ npm ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ๋๋ npm install [ํจํค์ง ์ด๋ฆ] ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ค์ฌ์ npm i [ํจํค์ง ์ด๋ฆ]๋ก ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฆฌ์กํธ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ผ์ฐํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ react-router-dom์ ์ค์นํ๋ ๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
npm install react-router-dom
์ค์น๊ฐ ์๋ฃ๋๋ฉด, ํด๋น ํจํค์ง๋ ํ๋ก์ ํธ ํด๋ ๋ด์ node_modules ํด๋์ ๋ค์ด๋ก๋๋๊ณ , ํ๋ก์ ํธ์ ์ค์ ํ์ผ์ธ package.json ํ์ผ์ dependencies ํญ๋ชฉ์ ์๋์ผ๋ก ๊ธฐ๋ก๋ฉ๋๋ค. ์ด ๊ธฐ๋ก ๋๋ถ์ ๋ค๋ฅธ ๊ฐ๋ฐ์์ ํ์
ํ ๋๋ npm install ๋ช
๋ น์ด ํ๋๋ก ๋ชจ๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ๊ฒ ์ค์นํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ฐ๋ฐ ์์กด์ฑ ์ค์น npm i -D ์ต์ ๋ณด๊ธฐ
์ผ๋ถ ํจํค์ง๋ ์ค์ ์๋น์ค ์ด์์๋ ํ์ํ์ง ์๊ณ , ๊ฐ๋ฐ ๊ณผ์ ์์๋ง ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฝ๋ ํฌ๋งทํ
์ ์ํ eslint๋ prettier์ ๊ฐ์ ๋๊ตฌ๊ฐ ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค. ์ด๋ฌํ ํจํค์ง๋ devDependencies๋ก ์ค์นํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ฉฐ, ์ด๋๋ -D ๋๋ --save-dev ์ต์
์ ์ฌ์ฉํฉ๋๋ค.
npm install eslint --save-dev
๋๋
npm i prettier -D
์ด๋ ๊ฒ ์ค์น๋ ํจํค์ง๋ ๋น๋ ์ ์ต์ข ๋ฐฐํฌ ํ์ผ์ ํฌํจ๋์ง ์์ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๋๋ฅผ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ฐ๋ฐ ์์กด์ฑ๊ณผ ์ผ๋ฐ ์์กด์ฑ์ ๊ตฌ๋ถํ๋ ๊ฒ์ ํจ์จ์ ์ธ ํ๋ก์ ํธ ๊ด๋ฆฌ์ ๊ธฐ๋ณธ์ ๋๋ค.
๐ npm ๋ฒ์ ๋ฐ ์บ์ ๊ด๋ฆฌ ํ ํ์ธํ๊ธฐ
npm์ ์ค๋ซ๋์ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋๋ก๋ ์์์น ๋ชปํ ์ค๋ฅ์ ์ง๋ฉดํ ์ ์์ต๋๋ค. ์ด๋ ์ข ์ข npm ์์ฒด์ ๋ฌธ์ , ํจํค์ง ๊ฐ์ ์ถฉ๋, ๋๋ ์บ์(Cache) ๋ฌธ์ ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํํ๊ฒ ์ ์งํ๊ธฐ ์ํ ๋ช ๊ฐ์ง npm ๊ด๋ฆฌ ํ์ ์๋ ค๋๋ฆฝ๋๋ค.
npm ๋ฒ์ ์ ๋ฐ์ดํธ ๋ฐ ์บ์ ์ญ์ ๋ณด๊ธฐ
npm ์์ฒด๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ๋ณด์ ๋ฐ ๊ธฐ๋ฅ ๊ฐ์ ์ ์ํด ์ค์ํฉ๋๋ค. npm์ ์
๋ฐ์ดํธํ๋ ค๋ฉด ์๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. (์ด๋ npm์ ์ด๋ฏธ Node.js์ ํจ๊ป ์ค์น๋์ด ์์ผ๋ฏ๋ก, ๊ธ๋ก๋ฒ ์ค์น ์ต์
-g๋ฅผ ์ฌ์ฉํฉ๋๋ค.)
npm install -g npm@latest
๋ํ, ํจํค์ง ์ค์น ์ค ๋ฐ๋ณต์ ์ธ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์๊ธฐ์น ์์ ๋์์ ํ ๊ฒฝ์ฐ, npm์ด ์ ์ฅํด ๋ ์บ์๋ฅผ ์ญ์ ํด ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. ์บ์๋ npm์ด ๋ค์ด๋ก๋ํ ํจํค์ง์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํด ๋๋ ๊ณณ์ ๋๋ค.
npm cache clean --force
์ด ๋ช ๋ น์ ์บ์ ํด๋์ ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ๋ก ์ญ์ ํ์ฌ, ๋ค์์ ํจํค์ง๋ฅผ ์ค์นํ ๋ ์์ ํ ์๋ก์ด ํ์ผ์ ๋ค์ด๋ก๋ํ๋๋ก ํฉ๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ๋ ์๋ํด ๋ณผ ์ ์๋ ์ ์ฉํ ํธ๋ฌ๋ธ์ํ ๋ฐฉ๋ฒ์ ๋๋ค.
๐ค Create React App(CRA)๊ณผ Vite์ ์ฐจ์ด์ ํ์ธํ๊ธฐ
2024๋
์ด์ ์ ๋ฆฌ์กํธ๋ฅผ ์ ํ๋ ๊ฐ๋ฐ์๋ผ๋ฉด npx create-react-app ๋ช
๋ น์ด๋ฅผ ๊ธฐ์ตํ์ค ๊ฒ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก Meta(๊ตฌ Facebook)์์ ๊ณต์์ ์ผ๋ก ์ ๊ณตํ๋ ํ๋ก์ ํธ ์์ฑ ๋๊ตฌ์ธ **Create React App (CRA)**์
๋๋ค. CRA๋ ๋ชจ๋ ์ค์ ์ ๋ด๋ถ์ ์ผ๋ก ์จ๊ธฐ๊ณ ๋ฐ๋ก ๊ฐ๋ฐ์ ์์ํ ์ ์๊ฒ ํด์ฃผ๋ ์ฅ์ ์ด ์์์ผ๋, ์ค์ ์ด ๋ณต์กํ๊ณ ์ด๊ธฐ ๊ตฌ๋ ๋ฐ ๋น๋ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค.
๋ฐ๋ฉด, Vite๋ ES ๋ชจ๋(ES Modules) ๋ค์ดํฐ๋ธ ์ง์์ ๋ฐํ์ผ๋ก ๊ฐ๋ฐ ์๋ฒ๋ฅผ ๊ตฌ๋ํ๊ธฐ ๋๋ฌธ์, CRA์ ๋นํด ์๋์ ์ผ๋ก ๋น ๋ฅธ ์์ ์๋์ HMR ์๋๋ฅผ ์๋ํฉ๋๋ค. CRA๊ฐ ์นํฉ(Webpack) ๊ธฐ๋ฐ์ผ๋ก ๋ณต์กํ ์ค์ ์ ํ์๋ก ํ๋ ๋ฐ๋ฉด, Vite๋ Rollup ๊ธฐ๋ฐ์ผ๋ก ๋ ๊ฐ๋ณ๊ณ ํจ์จ์ ์ ๋๋ค. ํ์ฌ ๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์์์๋ CRA๋ณด๋ค๋ Vite๋ Next.js์ ๊ฐ์ ๋ฉํํ๋ ์์ํฌ ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ์๋ก์ด ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค๋ฉด, ๊ฐ๋ฐ ์๋์ ์์ฐ์ฑ ์ธก๋ฉด์์ Vite๋ฅผ ์ ํํ๋ ๊ฒ์ด 2025๋ ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ์ ํ์ ๋๋ค.
โญ ๋ฆฌ์กํธ ์ค์น ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ ์์ฝ ๋ฐ ๋ค์ ๋จ๊ณ ์ ์ฒญํ๊ธฐ
์ง๊ธ๊น์ง Node.js์ npm์ ์ด์ฉํ 2025๋ ์ต์ ๋ฆฌ์กํธ ์ค์น ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ ๋ฐฉ๋ฒ์ ์์๋ณด์์ต๋๋ค. ํต์ฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Node.js(LTS ๋ฒ์ ) ์ค์น๋ฅผ ํตํด npm์ ํ๋ณดํ๋ค.
npm create vite@latest๋ช ๋ น์ด๋ก ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ Vite ๊ธฐ๋ฐ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค.npm install๋ก ์์กด์ฑ์ ์ค์นํ๊ณ ,npm run dev๋ก ๊ฐ๋ฐ์ ์์ํ๋ค.- ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
npm install [ํจํค์ง ์ด๋ฆ]์ ์ฌ์ฉํ์ฌ ์ค์นํ๋ค.
์ด ๊ฐ์ด๋๋ง ์๋ค๋ฉด ์ด๋ณด์๋ ์ฝ๊ฒ ๋ฆฌ์กํธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ณ ์น ๊ฐ๋ฐ์ ์ฌ์ ์ ์์ํ ์ ์์ต๋๋ค. ์ฑ๊ณต์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ ๊ฐ๋ฐ์ ์ ๋ฐ์ ๋๋ค. ์ด์ ๋ค์ ๋จ๊ณ์ธ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ๊ฐ๋ฐ ํ์ต์ผ๋ก ๋์๊ฐ์ธ์!
๐ ์ถ๊ฐ๋ก ์ฐธ๊ณ ํ ๋งํ ๊ธ
์์ฃผ ๋ฌป๋ ์ง๋ฌธ (FAQ)
Q1. npm๊ณผ npx์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
A. npm(Node Package Manager)์ ํจํค์ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ค์นํ๊ณ ๊ด๋ฆฌํ๋ ๋๊ตฌ์
๋๋ค. ๋ฐ๋ฉด, npx(Node Package eXecutor)๋ npm 5.2.0 ๋ฒ์ ๋ถํฐ ์ถ๊ฐ๋ ๋๊ตฌ๋ก, ๋ก์ปฌ ๋๋ ์๊ฒฉ์ ์ค์น๋ ๋
ธ๋ ํจํค์ง์ ์คํ ํ์ผ์ ํ ๋ฒ๋ง ์คํํ๊ณ ์ถ์ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, npx create-react-app์ CRA๋ฅผ ์์คํ
์ ์๊ตฌ์ ์ผ๋ก ์ค์นํ์ง ์๊ณ ํ ๋ฒ ์คํ๋ง ํ๋ ค๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ต์ Vite ํ๋ก์ ํธ ์์ฑ ๋ช
๋ น์ด์ธ npm create vite@latest๋ ๋ด๋ถ์ ์ผ๋ก npx์ ๊ฐ๋
์ด ์ ์ฉ๋์ด ์ต์ ํจํค์ง ์คํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Q2. ๋ฆฌ์กํธ ์ค์น ์ npm ๋์ yarn์ด๋ pnpm์ ์ฌ์ฉํด๋ ๋๋์?
A. ๋ค, ๊ฐ๋ฅํฉ๋๋ค. npm, yarn, pnpm ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ์
๋๋ค. Yarn์ Facebook์์ ๊ฐ๋ฐํ์ฌ npm์ ๋จ์ (์๋, ๋ณด์)์ ๊ฐ์ ํ๊ณ , pnpm์ ๋์คํฌ ๊ณต๊ฐ ํจ์จ์ฑ์ ๊ทน๋ํํ ๋๊ตฌ์
๋๋ค. ์ด๋ค ๋ชจ๋ ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ ๋ฐ ๊ด๋ฆฌ์ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, npm install ๋์ yarn install ๋๋ pnpm install๊ณผ ๊ฐ์ ํด๋น ๋๊ตฌ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ๊ธฐ๋ฅ์ ์ธ ์ฐจ์ด๋ ์์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ ์ญํ ์ ์ํํฉ๋๋ค.
Q3. npm install ํ node_modules ํด๋๋ฅผ Git์ ์ฌ๋ ค์ผ ํ๋์?
A. ์๋๋๋ค. node_modules ํด๋๋ ์ค์น๋ ๋ชจ๋ ์์กด์ฑ ํจํค์ง ํ์ผ์ด ๋ค์ด ์์ด ์ฉ๋์ด ๋งค์ฐ ํฝ๋๋ค. ์ด ํด๋๋ package.json ํ์ผ์ ๊ธฐ๋ก๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ ๋ ์ง npm install ๋ช
๋ น์ด๋ก ์ฌ์์ฑํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Git๊ณผ ๊ฐ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ ์ฌ๋ฆฌ์ง ์๊ณ , ํ๋ก์ ํธ ํด๋์ .gitignore ํ์ผ์ ๋ง๋ค์ด์ ์ด ํด๋๋ฅผ ์ ์ธํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค. ํ์
์๋ค์ ํ๋ก์ ํธ๋ฅผ ํด๋ก (Clone) ๋ฐ์ ํ npm install ๋ช
๋ น๋ง ์คํํ๋ฉด ๋ฉ๋๋ค.
Q4. Vite ์ค์น ์ TypeScript ๋์ JavaScript๋ฅผ ์ ํํด๋ ๋๋์?
A. ๋ค, ์์ ํ ๊ฐ๋ฅํฉ๋๋ค. TypeScript๋ JavaScript์ ์ ์ ํ์ ์ฒดํฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ธ์ด๋ก, ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์ฝ๋ ์์ ์ฑ์ ๋์ด๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ํ์ง๋ง ์ด๋ณด์๊ฐ ๋ฆฌ์กํธ ๊ฐ๋ฐ์ ์ฒ์ ์์ํ๋ค๋ฉด, ๋จผ์ JavaScript ํ๊ฒฝ์ ์ต์ํด์ง ํ TypeScript๋ฅผ ๋์ ํ๋ ๊ฒ์ด ํ์ต ๋ถ๋ด์ ์ค์ผ ์ ์์ต๋๋ค. Vite ํ๋ก์ ํธ ์์ฑ ์ Select a variant ๋จ๊ณ์์ JavaScript๋ฅผ ์ ํํ์๋ฉด ๋ฉ๋๋ค.