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
볡μ¬
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
볡μ¬
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
볡μ¬



