Q+Rate๋ ์จ๋ผ์ธ ์ค๋ฌธ์กฐ์ฌ ํ๋ซํผ์ผ๋ก, ์ฌ์ฉ์๊ฐ ์์ฝ๊ฒ ์ค๋ฌธ์ ์์ฑํ๊ณ ๊ณต์ ํ๋ฉฐ ์๋ต์ ์์งํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. 70๊ฐ ์ด์์ ํ ํ๋ฆฟ๊ณผ ๊ณ ๊ธ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋๊ตฌ๋ ์ ๋ฌธ์ ์ธ ์ค๋ฌธ์กฐ์ฌ๋ฅผ ์งํํ ์ ์์ต๋๋ค.
- ๋ค์ํ ์ง๋ฌธ ์ ํ: ๋ผ๋์ค, ์ฒดํฌ๋ฐ์ค, ํ ์คํธ ์ง๋ฌธ ์ง์
- ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ: ํน์ ์ ํ์ง์ ๋ฐ๋ผ ์ง๋ฌธ์ ๊ฑด๋๋ฐ๋ ์คํต ๊ท์น ์ค์
- ํ์/์ ํ ์ค์ : ์ง๋ฌธ๋ณ๋ก ํ์ ์ฌ๋ถ ์ง์
- ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ํธ์ง๊ณผ ๋์์ ์ค๋ฌธ ํ๋ฉด ํ์ธ
- 70+ ํ ํ๋ฆฟ: 13๊ฐ ์นดํ ๊ณ ๋ฆฌ์ ์ ๋ฌธ ํ ํ๋ฆฟ ์ ๊ณต
- ์ฐจํธ ์๊ฐํ: ๋ง๋ ๊ทธ๋ํ, ์ํ ๊ทธ๋ํ, ํต๊ณ ํ ์ด๋ธ
- ํ ์คํธ ๋ถ์: ์๋ํด๋ผ์ฐ๋, ๊ฐ์ ๋ถ์(๊ธ์ /๋ถ์ /์ค๋ฆฝ)
- ์๋ต ๊ฐ์: ์ด ์๋ต ์, ์ง๋ฌธ๋ณ ์์ธ ํต๊ณ
- ๋ง์ดํ์ด์ง: ํ๋กํ ์ ๋ณด, ํ๋ ํต๊ณ
- ๋ด๊ฐ ๋ง๋ ์ค๋ฌธ: ์ค๋ฌธ ๋ชฉ๋ก, ์๋ต ํํฉ, ๊ฒฐ๊ณผ ๋ณด๊ธฐ
- ๋ด ์๋ต ๋ด์ญ: ์๋ตํ ์ค๋ฌธ ๋ชฉ๋ก ๋ฐ ์์ธ ๋ณด๊ธฐ
- ๋งํฌ ๋ณต์ฌ: ํด๋ฆฝ๋ณด๋ ๊ณต์
- ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํฑ ์๋ฒฝ ๋์
ย
- Node.js: v18 ์ด์
- npm: v9 ์ด์
npm installnpm run dev- ๊ฐ๋ฐ ์๋ฒ๊ฐ
http://localhost:3000์์ ์คํ๋ฉ๋๋ค. - ํซ ๋ฆฌ๋ก๋ ๊ธฐ๋ฅ์ผ๋ก ํ์ผ ๋ณ๊ฒฝ ์ ์๋์ผ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ก๊ณ ์นจ๋ฉ๋๋ค.
npm run build- ์ต์ ํ๋ ํ๋ก๋์
๋น๋๊ฐ
out/๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. - ์์ค๋งต์ด ํฌํจ๋์ด ๋๋ฒ๊น ์ด ์ฉ์ดํฉ๋๋ค.
npm run preview- ๋ก์ปฌ์์ ํ๋ก๋์ ๋น๋๋ ํ์ผ์ ๋ฏธ๋ฆฌ๋ณผ ์ ์์ต๋๋ค.
ย
src/
โโโ assets/ # ์ด๋ฏธ์ง ๋ฆฌ์์ค
โ โโโ default_profile.png # ๊ธฐ๋ณธ ํ๋กํ ์ด๋ฏธ์ง
โ โโโ logo.png # ๋ก๊ณ
โ โโโ ...
โ
โโโ components/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ
โ โโโ ScrollToTop.tsx # ํ์ด์ง ์ด๋ ์ ์คํฌ๋กค ์ด๊ธฐํ
โ โโโ feature/ # ๊ณตํต ๊ธฐ๋ฅ ์ปดํฌ๋ํธ
โ โ โโโ Header.tsx # ์ ์ญ ํค๋ (๋ก๊ทธ์ธ/๋ก๊ทธ์์)
โ โ โโโ PageHeader.tsx # ํ์ด์ง๋ณ ํค๋
โ โโโ home/ # ํ ํ์ด์ง ์น์
โ โ โโโ HeroSection.tsx
โ โ โโโ FeaturesSection.tsx
โ โ โโโ TemplateSection.tsx
โ โ โโโ ...
โ โโโ mypage/ # ๋ง์ดํ์ด์ง ์ปดํฌ๋ํธ
โ โ โโโ ProfileCard.tsx
โ โ โโโ UserInfoForm.tsx
โ โ โโโ RespondedSurveyList.tsx
โ โโโ mysurveys/
โ โ โโโ DeleteConfirmModal.tsx
โ โโโ results/ # ๊ฒฐ๊ณผ ๋ถ์ ์ปดํฌ๋ํธ
โ โ โโโ Charts.tsx # ๋ง๋/์ํ ์ฐจํธ
โ โ โโโ TextAnalysis.tsx # ์๋ํด๋ผ์ฐ๋, ๊ฐ์ ๋ถ์
โ โ โโโ ...
โ โโโ survey/ # ์ค๋ฌธ ์์ฑ/์๋ต ์ปดํฌ๋ํธ
โ โโโ QuestionEditor.tsx
โ โโโ SurveyPreview.tsx
โ โโโ RadioQuestion.tsx
โ โโโ CheckboxQuestion.tsx
โ โโโ TextQuestion.tsx
โ โโโ ...
โ
โโโ pages/ # ํ์ด์ง ์ปดํฌ๋ํธ
โ โโโ NotFound.tsx # 404 ํ์ด์ง
โ โโโ home/page.tsx # ํ (๋๋ฉ)
โ โโโ login/page.tsx # ๋ก๊ทธ์ธ
โ โโโ signup/page.tsx # ํ์๊ฐ์
โ โโโ create/page.tsx # ์ค๋ฌธ ์์ฑ/ํธ์ง
โ โโโ templates/page.tsx # ํ
ํ๋ฆฟ ๋ชฉ๋ก
โ โโโ survey/page.tsx # ์ค๋ฌธ ์๋ต
โ โโโ results/page.tsx # ์ค๋ฌธ ๊ฒฐ๊ณผ ๋ถ์
โ โโโ mypage/page.tsx # ๋ง์ดํ์ด์ง
โ โโโ mysurveys/page.tsx # ๋ด๊ฐ ๋ง๋ ์ค๋ฌธ
โ โโโ myresponse/page.tsx # ๋ด ์๋ต ๋ด์ญ
โ
โโโ router/ # ๋ผ์ฐํ
์ค์
โ โโโ config.tsx # ๋ผ์ฐํธ ์ ์
โ โโโ index.ts
โ
โโโ types/ # TypeScript ํ์
์ ์
โ โโโ survey.ts # Survey, Question, Response ํ์
โ
โโโ utils/ # ์ ํธ๋ฆฌํฐ ํจ์
โ โโโ calculateChartData.ts # ์ฐจํธ ๋ฐ์ดํฐ ๊ณ์ฐ
โ โโโ calculateSentiment.ts # ๊ฐ์ ๋ถ์ ๋ก์ง
โ โโโ generateWordCloud.ts # ์๋ํด๋ผ์ฐ๋ ์์ฑ
โ
โโโ data/ # ๋ฐ์ดํฐ
โ โโโ sampleSurveys.ts # ์ํ ์ค๋ฌธ
โ โโโ templateData.ts # 70+ ํ
ํ๋ฆฟ (13๊ฐ ์นดํ
๊ณ ๋ฆฌ)
โ
โโโ i18n/ # ๊ตญ์ ํ ์ค์ (๋ค๊ตญ์ด ์ง์ ์ค๋น)
โ
โโโ App.tsx # ๋ฉ์ธ ์ฑ ์ปดํฌ๋ํธ
โโโ main.tsx # ์ํธ๋ฆฌ ํฌ์ธํธ
โโโ index.css # ์ ์ญ ์คํ์ผ
ย
| ๋ถ๋ฅ | ๊ธฐ์ | ๋ฒ์ |
|---|---|---|
| ํ๋ ์์ํฌ | React | 18.3.1 |
| ์ธ์ด | TypeScript | 5.8.3 |
| ๋น๋ ๋๊ตฌ | Vite | 7.0.3 |
| ๋ผ์ฐํ | React Router DOM | 7.6.3 |
| ๋ถ๋ฅ | ๊ธฐ์ | ๋ฒ์ |
|---|---|---|
| ์คํ์ผ๋ง | Tailwind CSS | 3.4.17 |
| ์ ๋๋ฉ์ด์ | Framer Motion | 12.23.25 |
| ์์ด์ฝ | Lucide React | 0.469.0 |
| ๋์์ธ ํจํด | Glassmorphism, Neumorphism | - |
| ๋ถ๋ฅ | ๊ธฐ์ | ๋ฒ์ |
|---|---|---|
| ์ฐจํธ | Recharts | 3.2.0 |
| ์๋ํด๋ผ์ฐ๋ | React D3 Cloud | 1.0.6 |
| PDF ๋ด๋ณด๋ด๊ธฐ | jsPDF | 3.0.4 |
| ํ๋ฉด ์บก์ฒ | html2canvas | 1.4.1 |
| ๋ถ๋ฅ | ๊ธฐ์ | ๋ฒ์ |
|---|---|---|
| ๋ค๊ตญ์ด ์ง์ | i18next, react-i18next | 25.3.2 / 15.6.0 |
| ์๋ ์ํฌํธ | unplugin-auto-import | 19.3.0 |
| ๋ฆฐํ | ESLint | 9.30.1 |
- React Hooks (useState, useEffect, useMemo, useCallback)
- LocalStorage (์ฌ์ฉ์ ์ ๋ณด, ์ค๋ฌธ ๋ฐ์ดํฐ, ์๋ต ๋ฐ์ดํฐ)
ย
ํ๋ก์ ํธ์ ํต์ฌ ํ๋ ์์ํฌ์ ๋๋ค.
npm install react react-dom
npm install --save-dev @types/react @types/react-dom typescript๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ์ ์ต์ ํ๋ ํ๋ก๋์ ๋น๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
npm install --save-dev vite @vitejs/plugin-react-swc์ฌ์ฉ ๋ฐฉ๋ฒ:
# ๊ฐ๋ฐ ์๋ฒ ์คํ
npm run dev
# ํ๋ก๋์
๋น๋
npm run build
# ๋น๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
npm run previewํ์ด์ง ๊ฐ ๋ค๋น๊ฒ์ด์ ์ ๊ด๋ฆฌํฉ๋๋ค.
npm install react-router-dom์ ํธ๋ฆฌํฐ ์ฐ์ CSS ํ๋ ์์ํฌ์ ๋๋ค.
npm install --save-dev tailwindcss postcss autoprefixer
npx tailwindcss init -p๊ณ ๊ธ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ๊ตฌํํฉ๋๋ค.
npm install framer-motion์๋ต ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ๋ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
npm install rechartsํ ์คํธ ์๋ต์ ์๋ํด๋ผ์ฐ๋๋ก ์๊ฐํํฉ๋๋ค.
npm install react-d3-cloud d3-cloud์ค๋ฌธ ๊ฒฐ๊ณผ๋ฅผ PDF๋ก ์ ์ฅํฉ๋๋ค.
npm install jspdf html2canvas๋ชจ๋ํ ์์ด์ฝ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
npm install lucide-react๋ค๊ตญ์ด ์ง์ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
npm install i18next react-i18next i18next-browser-languagedetector์ฝ๋ ์คํ์ผ๊ณผ ์ค๋ฅ๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
npm install --save-dev eslint @eslint/js eslint-plugin-react-hooks eslint-plugin-react-refresh typescript-eslintํ๋ก์ ํธ ์ต์ด ์ค์ ์ package.json์ด ์๋ ๊ฒฝ์ฐ:
npm install์ด ๋ช
๋ น์ด๋ package.json์ ์ ์๋ ๋ชจ๋ ์์กด์ฑ์ ์๋์ผ๋ก ์ค์นํฉ๋๋ค.
ย
1. ์ค๋ฌธ ์์ฑ (/create)
- ์ค๋ฌธ ์ ๋ชฉ ๋ฐ ์ค๋ช ์ ๋ ฅ
- ์ง๋ฌธ ์ถ๊ฐ/์ญ์ /์์
- ๋ผ๋์ค ๋ฒํผ (๋จ์ผ ์ ํ)
- ์ฒดํฌ๋ฐ์ค (๋ค์ค ์ ํ)
- ํ ์คํธ (์ฃผ๊ด์)
- ํ์/์ ํ ์ง์ : ์ง๋ฌธ๋ณ
requiredํ๋๊ทธ - ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ (Skip Rules)
- ํน์ ์ ํ์ง ์ ํ ์ ๋ค์ ์ง๋ฌธ์ผ๋ก ๊ฑด๋๋ฐ๊ธฐ
- ์: "๋ง์กฑํ์ญ๋๊น?" โ "์๋์ค" ์ ํ โ ๋ถ๋ง์กฑ ์ด์ ์ง๋ฌธ์ผ๋ก ์ด๋
- ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ํธ์ง๊ณผ ๋์์ ์ค๋ฌธ ํ๋ฉด ํ์ธ
- ํ ํ๋ฆฟ ์ฌ์ฉ: 70+ ํ ํ๋ฆฟ ์ค ์ ํํ์ฌ ๋น ๋ฅธ ์์
2. ํ ํ๋ฆฟ (/templates)
- 70๊ฐ ์ด์์ ์ ๋ฌธ ํ ํ๋ฆฟ ์ ๊ณต
- 13๊ฐ ์นดํ ๊ณ ๋ฆฌ: ๋น์ฆ๋์ค, ์ด๋ฒคํธ, ๋ฆฌ์์น, HR, ๊ต์ก, ํฌ์ค์ผ์ด, ์๋งค/์ ํต, ์ธ์/์๋น์ค, ๊ธฐ์ /IT, ์ปค๋ฎค๋ํฐ, ์ ๋ถ/๊ณต๊ณต, ๊ธ์ต/๋ณดํ, ์ฌํ/์๋ฐ, ESG/์ฌํ๊ณตํ, ํฌ๋ฆฌ์์ดํฐ๋ธ
- ์ํด๋ฆญ ์ฌ์ฉ: ํ ํ๋ฆฟ ํด๋ฆญ ์ ์ค๋ฌธ ์์ฑ ํ์ด์ง๋ก ์๋ ๋ก๋
3. ์ค๋ฌธ ๊ณต์ (SurveyShareModal)
- ๋งํฌ ๋ณต์ฌ: ํด๋ฆฝ๋ณด๋์ ์ค๋ฌธ URL ๋ณต์ฌ
- ์ค๋ฌธ ์ฝ๋: ๊ณ ์ ID๋ก ์ค๋ฌธ ์๋ณ
4. ์ค๋ฌธ ์๋ต (/survey/:id)
- ๋์ ์ง๋ฌธ ์ด๋: Skip Rules์ ๋ฐ๋ฅธ ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ
- ์งํ๋ฅ ํ์: ํ์ฌ ์งํ ์ํฉ์ ์๊ฐ์ ์ผ๋ก ํ์
- ํ์ ์ง๋ฌธ ๊ฒ์ฆ: ํ์ ์ง๋ฌธ ๋ฏธ์๋ต ์ ๋ค์์ผ๋ก ์ด๋ ๋ถ๊ฐ
- ์ด์ ๋ฒํผ: ๊ฑด๋๋ด ์ง๋ฌธ ํฌํจ ์ ํํ ์ญ์ถ์
- ์๋ต ์ ์ฅ: LocalStorage์ ์ค์๊ฐ ์ ์ฅ
- ์๋ฃ ํ๋ฉด: ์ ์ถ ์ฑ๊ณต ๋ฉ์์ง ๋ฐ ๊ฒฐ๊ณผ ๋ณด๊ธฐ ๋งํฌ
5. ๊ฒฐ๊ณผ ๋ถ์ (/results/:id)
- ๋ง๋ ๊ทธ๋ํ (BarChart)
- ์ํ ๊ทธ๋ํ (PieChart)
- ์์ธ ํต๊ณ (Statistics)
- ์ ํ์ง๋ณ ์๋ต ์, ๋น์จ, ํผ์ผํธ
- ์๋ํด๋ผ์ฐ๋ (generateWordCloud)
- ๋จ์ด ๋น๋ ์๊ฐํ
- ๊ฐ์ ๋ถ์ (calculateSentiment)
- ๊ธ์ /๋ถ์ /์ค๋ฆฝ ๋น์จ ๋ถ์
- ํ๊ตญ์ด ๊ฐ์ ํค์๋ ๊ธฐ๋ฐ
- ์ต๊ทผ ์๋ต: ์ต์ ์๋ต 5๊ฐ ํ์
- ์ด ์๋ต ์
- ์ง๋ฌธ๋ณ ์์ธ ํต๊ณ
- ์๋ต ์๊ฐ ์ ๋ณด
6. ๋ง์ดํ์ด์ง (/mypage)
- ํ๋กํ ์ ๋ณด: ์ด๋ฆ, ์ด๋ฉ์ผ, ๊ฐ์ ์ผ
- ํ๋ ํต๊ณ: ์๋ตํ ์ค๋ฌธ ์, ์์ฑํ ์ค๋ฌธ ์
- ์ ๋ณด ์์ : ์ด๋ฆ, ์ฑ๋ณ, ์ฐ๋ น๋ ์์
- ์๋ต ๋ด์ญ: ๋ด๊ฐ ์๋ตํ ์ค๋ฌธ ๋ชฉ๋ก ๋ฐ ์์ธ๋ณด๊ธฐ
7. ๋ด๊ฐ ๋ง๋ ์ค๋ฌธ (/mysurveys)
- ์ค๋ฌธ ๋ชฉ๋ก: ๋ก๊ทธ์ธํ ์ฌ์ฉ์๊ฐ ์์ฑํ ์ค๋ฌธ๋ง ํ์
- ์๋ต ํํฉ: ๊ฐ ์ค๋ฌธ์ ์๋ต ์
- ์ค๋ฌธ ๊ด๋ฆฌ
- ์ค๋ฌธ ์ด๊ธฐ: ์ค๋ฌธ ์๋ต ํ์ด์ง๋ก ์ด๋
- ๊ฒฐ๊ณผ ๋ณด๊ธฐ: ์ค๋ฌธ ๊ฒฐ๊ณผ ๋ถ์ ํ์ด์ง๋ก ์ด๋
- ์ค๋ฌธ ์ญ์ : ํ์ธ ๋ชจ๋ฌ ํ ์ญ์
8. ๋ด ์๋ต ๋ด์ญ (/myresponse/:id)
- ์๋ต ์์ธ ๋ณด๊ธฐ: ๋ด๊ฐ ์๋ตํ ์ค๋ฌธ์ ์์ธ ๋ด์ฉ
- ์ง๋ฌธ๋ณ ๋ต๋ณ: ๊ฐ ์ง๋ฌธ์ ๋ํ ๋์ ์๋ต ํ์ธ
ย
์ด ํ๋ก์ ํธ๋ Netlify์ ์๋ ๋ฐฐํฌ๋๋๋ก ์ค์ ๋์ด ์์ต๋๋ค.
- ๋น๋ ๋ช
๋ น:
npm run build - ๋ฐฐํฌ ๋๋ ํ ๋ฆฌ:
out/ - Node ๋ฒ์ : 18 ์ด์
- ํ๊ฒฝ ๋ณ์:
BASE_PATH(์๋ธ ๊ฒฝ๋ก ๋ฐฐํฌ ์)
# ํ๋ก๋์
๋น๋
npm run build
# ๋น๋ ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
npm run previewย
ํ๋ก์ ํธ๋ ๋ธ๋ผ์ฐ์ ์ LocalStorage๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
| ํค | ์ค๋ช | ํ์ |
|---|---|---|
userInfo |
์ฌ์ฉ์ ์ ๋ณด | Array<User> |
accessToken |
๋ก๊ทธ์ธ ํ ํฐ | string |
surveys |
์ ์ฒด ์ค๋ฌธ ๋ชฉ๋ก | Array<Survey> |
survey_{id} |
๊ฐ๋ณ ์ค๋ฌธ ๋ฐ์ดํฐ | Survey |
responses_{id} |
์ค๋ฌธ๋ณ ์๋ต ๋ฐ์ดํฐ | Array<Response> |
myResponses |
๋ด ์๋ต ๋ชฉ๋ก | Array<MyResponse> |
์ฃผ์ ํ์ ์ ์ (types/survey.ts)
interface Survey {
id: string
title: string
description?: string
questions: Question[]
creatorId: string
createdAt: string
}
interface Question {
id: string
type: 'radio' | 'checkbox' | 'text'
question: string
options?: string[]
required: boolean
skipRules?: SkipRule[]
}
interface SkipRule {
optionIndex: number
skipToQuestionId: string
}ย
- Primary: Violet-Purple-Fuchsia Gradient
- Background: White with Glassmorphism effect
- Text: Gray scale (900, 700, 600, 500)
- Accent: Blue, Green, Red for status
- ํ๊ธ: Pretendard
- ์๋ฌธ: Poppins
- ๋ก๊ณ : Pacifico
- Mobile: < 640px
- Tablet: 640px - 1024px
- Desktop: โฅ 1024px
ย
| ๊ฒฝ๋ก | ์ปดํฌ๋ํธ | ์ค๋ช |
|---|---|---|
/ |
HomePage | ๋๋ฉ ํ์ด์ง |
/login |
LoginPage | ๋ก๊ทธ์ธ |
/signup |
SignupPage | ํ์๊ฐ์ |
/create |
CreatePage | ์ค๋ฌธ ์์ฑ/ํธ์ง |
/templates |
TemplatesPage | ํ ํ๋ฆฟ ๋ชฉ๋ก |
/survey/:id |
SurveyPage | ์ค๋ฌธ ์๋ต |
/results/:id |
ResultsPage | ์ค๋ฌธ ๊ฒฐ๊ณผ |
/mypage |
MyPage | ๋ง์ดํ์ด์ง |
/mysurveys |
MySurveysPage | ๋ด๊ฐ ๋ง๋ ์ค๋ฌธ |
/myresponse/:id |
MyResponsePage | ๋ด ์๋ต ์์ธ |
* |
NotFound | 404 ํ์ด์ง |
ย
-
์บ์ ์ด๊ธฐํ
npm cache clean --force rm -rf node_modules package-lock.json npm install npm start
-
ํฌํธ ์ถฉ๋ ํ์ธ
- ๊ธฐ๋ณธ ํฌํธ 5173์ด ์ฌ์ฉ ์ค์ด๋ฉด Vite๊ฐ ์๋์ผ๋ก ๋ค๋ฅธ ํฌํธ๋ฅผ ํ ๋นํฉ๋๋ค.
- ์ฝ์ ๋ฉ์์ง๋ฅผ ํ์ธํ์ฌ ์ค์ ์คํ ์ค์ธ ํฌํธ๋ฅผ ํ์ธํ์ธ์.
npm install- ์ต์ ์์กด์ฑ์ ์ค์นํฉ๋๋ค.
npm run build- ๋น๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์๋ฌ ๋ฉ์์ง๋ฅผ ํ์ธํ๊ณ ์์ ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ (F12) โ Application โ Local Storage โ Clear All
- ๋๋ ๋ธ๋ผ์ฐ์ ์บ์ ์ ์ฒด ์ญ์ ย
ํ๋ก์ ํธ ๊ด๋ จ ๋ฌธ์์ฌํญ์ ์ด์๋ฅผ ํตํด ๋จ๊ฒจ์ฃผ์ธ์.