Search

Tailwind

React + Vite + Tailwind CSS μ„ΈνŒ… κ°€μ΄λ“œ

μ΅œμ‹  버전 κΈ°μ€€ (Vite 6.x / Tailwind CSS v4.x)

1단계. React + Vite ν”„λ‘œμ νŠΈ 생성

JavaScript 버전

npm create vite@latest my-app -- --template react
Bash
볡사

TypeScript 버전

npm create vite@latest my-app -- --template react-ts
Bash
볡사
my-app μžλ¦¬μ— μ›ν•˜λŠ” ν”„λ‘œμ νŠΈ 이름을 μž…λ ₯ν•˜μ„Έμš”.

ν”„λ‘œμ νŠΈ ν΄λ”λ‘œ 이동 ν›„ νŒ¨ν‚€μ§€ μ„€μΉ˜

cd my-app npm install
Bash
볡사

μƒμ„±λœ 폴더 ꡬ쑰

my-app/ β”œβ”€β”€ public/ β”‚ └── vite.svg β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ assets/ β”‚ β”œβ”€β”€ App.css β”‚ β”œβ”€β”€ App.jsx β”‚ β”œβ”€β”€ index.css β”‚ └── main.jsx β”œβ”€β”€ eslint.config.js β”œβ”€β”€ index.html β”œβ”€β”€ package.json β”œβ”€β”€ README.md └── vite.config.js
Plain Text
볡사

2단계. Tailwind CSS v4 μ„€μΉ˜

Tailwind + Vite ν”ŒλŸ¬κ·ΈμΈ μ„€μΉ˜

npm install tailwindcss @tailwindcss/vite
Bash
볡사
Tailwind v4λΆ€ν„°λŠ” λ³„λ„μ˜ postcss, autoprefixer μ„€μΉ˜κ°€ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€.

3단계. vite.config.js μˆ˜μ •

κΈ°μ‘΄ νŒŒμΌμ„ μ•„λž˜μ™€ 같이 μˆ˜μ •ν•©λ‹ˆλ‹€.
// vite.config.js import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import tailwindcss from '@tailwindcss/vite' // ← μΆ”κ°€ export default defineConfig({ plugins: [ react(), tailwindcss(), // ← μΆ”κ°€ ], })
JavaScript
볡사

4단계. index.css μˆ˜μ •

src/index.css 파일의 κΈ°μ‘΄ λ‚΄μš©μ„ λͺ¨λ‘ μ§€μš°κ³  μ•„λž˜ ν•œ μ€„λ§Œ μΆ”κ°€ν•©λ‹ˆλ‹€.
/* src/index.css */ @import "tailwindcss";
CSS
볡사
Tailwind v4λΆ€ν„°λŠ” tailwind.config.js 파일이 ν•„μš” μ—†μŠ΅λ‹ˆλ‹€.
CSS νŒŒμΌμ—μ„œ @import "tailwindcss" ν•œ μ€„λ‘œ λͺ¨λ“  섀정이 μ™„λ£Œλ©λ‹ˆλ‹€.

5단계. λ™μž‘ 확인

src/App.jsxλ₯Ό μ—΄μ–΄ Tailwind 클래슀λ₯Ό μ μš©ν•΄λ΄…λ‹ˆλ‹€.
// src/App.jsx function App() { return ( <div className="min-h-screen bg-gray-100 flex items-center justify-center"> <div className="bg-white rounded-2xl shadow-lg p-10 text-center"> <h1 className="text-4xl font-bold text-blue-600 mb-4"> React + Vite + Tailwind </h1> <p className="text-gray-500 text-lg"> μ„ΈνŒ… μ™„λ£Œ! πŸŽ‰ </p> <button className="mt-6 px-6 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors"> μ‹œμž‘ν•˜κΈ° </button> </div> </div> ) } export default App
JavaScript
볡사

6단계. 개발 μ„œλ²„ μ‹€ν–‰

npm run dev
Bash
볡사
λΈŒλΌμš°μ €μ—μ„œ http://localhost:5173 접속 ν›„ Tailwind μŠ€νƒ€μΌμ΄ 적용되면 μ™„λ£Œμž…λ‹ˆλ‹€.

전체 μ„ΈνŒ… μš”μ•½

# 1. ν”„λ‘œμ νŠΈ 생성 npm create vite@latest my-app -- --template react # 2. 폴더 이동 및 νŒ¨ν‚€μ§€ μ„€μΉ˜ cd my-app npm install # 3. Tailwind μ„€μΉ˜ npm install tailwindcss @tailwindcss/vite
Bash
볡사
// vite.config.js μˆ˜μ • import tailwindcss from '@tailwindcss/vite' plugins: [react(), tailwindcss()]
JavaScript
볡사
/* src/index.css - κΈ°μ‘΄ λ‚΄μš© μ‚­μ œ ν›„ μΆ”κ°€ */ @import "tailwindcss";
CSS
볡사

v3 vs v4 차이점

ν•­λͺ©
Tailwind v3
Tailwind v4
μ„€μΉ˜ νŒ¨ν‚€μ§€
tailwindcss postcss autoprefixer
tailwindcss @tailwindcss/vite
μ„€μ • 파일
tailwind.config.js ν•„μš”
ν•„μš” μ—†μŒ
PostCSS μ„€μ •
postcss.config.js ν•„μš”
ν•„μš” μ—†μŒ
CSS import
@tailwind base/components/utilities 3쀄
@import "tailwindcss" 1쀄
μ»€μŠ€ν…€ μ„€μ •
tailwind.config.js μ—μ„œ μˆ˜μ •
index.css μ—μ„œ @theme μ‚¬μš©

Tailwind v4 μ»€μŠ€ν…€ 색상/폰트 μ„€μ •

v4μ—μ„œλŠ” index.css μ•ˆμ—μ„œ 직접 μ»€μŠ€ν…€ 섀정을 ν•©λ‹ˆλ‹€.
/* src/index.css */ @import "tailwindcss"; @theme { --color-primary: #3b82f6; --color-secondary: #8b5cf6; --font-heading: "Pretendard", sans-serif; --breakpoint-xs: 480px; }
CSS
볡사
{/* μ»€μŠ€ν…€ 색상 μ‚¬μš© */} <button className="bg-primary text-white">λ²„νŠΌ</button>
JavaScript
볡사