
1. 먼저 가장 쉬운 질문부터
Vite는 무엇인가 - 웹 프로젝트를 빠르게 만들고 실행하도록 도와주는 개발 도구
한 문장으로 말하면
웹 프로젝트를 빠르게 만들고 실행하도록 도와주는 개발 도구입니다.
조금 더 쉽게 말하면
React 프로젝트를 만들기 위한 개발 작업 환경 세트
입니다.
2. 왜 이런 도구가 필요한가
우리가 웹사이트를 만든다고 생각해보겠습니다.
단순 HTML이라면 이렇게 하면 됩니다.
index.html
브라우저에서 열면 바로 보입니다.
하지만 React 프로젝트는 다릅니다.
React 프로젝트는 보통 이런 파일이 있습니다.
App.tsx
main.tsx
component.tsx
style.css
module.ts
브라우저는 이런 파일을 직접 이해하지 못합니다.
그래서 중간에서 이런 작업을 해주는 도구가 필요합니다.
- 파일을 브라우저가 이해하도록 변환
- 여러 파일을 하나로 묶기
- 변경될 때 자동 새로고침
- 개발용 서버 실행
이 모든 것을 해주는 도구가 바로 Vite입니다.
3. Vite의 역할을 그림으로 보면
React 코드
TypeScript 코드
CSS
이미지
↓
Vite
↓
브라우저가 이해하는 JavaScript
즉
코드를 브라우저용으로 준비해주는 도구
입니다.
4. Vite를 비유로 설명하면
웹 개발을 “요리”라고 생각해보겠습니다.
재료는 다음과 같습니다.
React
TypeScript
CSS
이미지
이 재료들을 그냥 접시에 올리면 음식이 아닙니다.
요리 도구가 필요합니다.
- 가스레인지
- 믹서기
- 오븐
- 도마
웹 개발에서도 이런 요리 도구 세트가 필요합니다.
Vite는 바로 이 역할입니다.
즉
개발을 편하게 만들어주는 주방 세트
입니다.
5. Vite가 해주는 중요한 기능
Vite는 크게 4가지 역할을 합니다.
1️⃣ 개발 서버 실행
React 프로젝트는 이렇게 실행합니다.
npm run dev
그러면 브라우저에서
localhost:5173
같은 주소가 열립니다.
이것을 개발 서버라고 합니다.
즉
내 컴퓨터에서 웹사이트를 실행하는 기능
입니다.
2️⃣ 자동 새로고침
코드를 수정하면
브라우저가 자동으로 업데이트됩니다.
예를 들어
텍스트 수정
→ 저장
→ 화면 바로 변경
이 기능을
Hot Reload
라고 합니다.
이 기능이 없으면 개발 속도가 매우 느려집니다.
3️⃣ 코드 변환
React는 이런 문법을 사용합니다.
<App />
브라우저는 이것을 이해하지 못합니다.
그래서 Vite가 이런 작업을 합니다.
React 코드
→ 일반 JavaScript 코드로 변환
또 TypeScript도 변환합니다.
TypeScript
→ JavaScript
4️⃣ 최종 빌드
개발이 끝나면
npm run build
명령을 실행합니다.
그러면 이런 일이 일어납니다.
- 코드 압축
- 파일 합치기
- 성능 최적화
즉
웹사이트를 실제 배포용으로 준비합니다.
6. Vite 이전에는 무엇을 썼나
예전 React 개발에서는
Create React App
Webpack
같은 도구를 많이 사용했습니다.
하지만 문제가 있었습니다.
- 설정이 복잡함
- 실행 속도 느림
- 빌드 시간 길음
그래서 등장한 것이
Vite
입니다.
7. Vite의 가장 큰 장점
가장 큰 특징은
엄청 빠르다는 것입니다.
왜냐하면 Vite는
ES Module
이라는 최신 브라우저 기술을 사용합니다.
그래서
기존 도구보다
10배 이상 빠르게 실행
되는 경우도 많습니다.
8. 실제 프로젝트 구조
Vite로 React 프로젝트를 만들면 보통 이렇게 생깁니다.
my-project
│
├ src
│ ├ App.tsx
│ ├ main.tsx
│
├ index.html
├ package.json
├ vite.config.ts
각 파일의 역할을 간단히 보면
src
실제 코드
App.tsx
메인 화면
main.tsx
React 시작점
index.html
웹페이지 뼈대
vite.config.ts
Vite 설정
9. React + Tailwind + TypeScript 환경에서 Vite 역할
지금 만들려는 환경은
React
TypeScript
Tailwind
입니다.
Vite는 여기서
모든 것을 연결하는 중심 역할을 합니다.
TypeScript
↓
Vite가 JavaScript로 변환
Tailwind
↓
Vite가 CSS 처리
React
↓
Vite가 브라우저 실행
즉
모든 개발 도구를 하나의 환경에서 돌아가게 만드는 시스템
입니다.
10. Cursor + Vibe Coding에서 Vite가 중요한 이유
Cursor로 AI 코딩을 할 때
프로젝트 환경이 중요합니다.
Vite는
React
TypeScript
Tailwind
조합에서 가장 안정적인 환경입니다.
그래서 많은 AI 코딩 튜토리얼에서도
Vite + React
를 기본으로 사용합니다.
11. 디자이너 관점에서 이해하면
디자이너 입장에서 Vite를 이해하는 가장 쉬운 방법은 이것입니다.
Vite는
웹사이트를 만들기 위한 작업 환경
입니다.
즉
Figma
↓
코드 작성
↓
Vite
↓
브라우저 실행
Vite는
코드를 실제 웹페이지로 보여주는 엔진
입니다.
12. 가장 쉬운 핵심 정리
정말 간단히 정리하면
Vite는
React 프로젝트를 빠르고 편하게 만들고 실행하게 해주는 개발 환경 도구
입니다.
13. 지금 로드맵에서 Vite의 위치
사용자님의 로드맵을 기준으로 보면
Figma 디자인
↓
HTML/CSS 구현
↓
Tailwind 리팩토링
↓
Git 관리
↓
React 프로젝트
↑
Vite
↓
JavaScript 인터랙션
↓
Vercel 배포
Vite는
React 프로젝트가 돌아가게 하는 엔진
이라고 보면 됩니다.
14. 다음 단계에서 반드시 알아야 하는 것
Vite를 이해했다면 다음으로 중요한 것은
React 프로젝트 구조입니다.
특히 이 3개를 이해해야 합니다.
index.html
main.tsx
App.tsx
이 구조를 이해하면
React 프로젝트가 어떻게 시작되는지 완전히 이해됩니다.
1. React 프로젝트를 만드는 방법은 시대별로 바뀌었습니다
React 자체는 그냥 UI 라이브러리입니다.
그래서 React만으로는 프로젝트를 바로 시작할 수 없습니다.
항상 프로젝트를 만들어주는 도구가 필요합니다.
시대별로 보면 이렇게 바뀌었습니다.
2016~2021
Create React App
2021~2023
Next.js
2023~현재
Vite + React
이걸 이해하는 것이 중요합니다.
2. 예전 방식 Create React App
예전에는 React 프로젝트를 만들 때 거의 항상 이것을 썼습니다.
npx create-react-app my-app
Create React App은
- React 프로젝트 자동 생성
- 개발 서버 실행
- 빌드
- webpack 설정
이런 걸 자동으로 해주는 도구였습니다.
문제는 시간이 지나면서 나타났습니다.
단점
- 실행 속도가 느림
- 빌드 시간이 오래 걸림
- 설정이 복잡
- 업데이트가 느림
그래서 점점 사람들이 다른 도구를 찾기 시작했습니다.
3. 그 다음에 많이 쓰기 시작한 것이
Next.js
Next.js
Next.js는 React 기반 웹 프레임워크입니다.
React보다 더 큰 개념입니다.
Next.js가 하는 일은
- React UI
- 서버 기능
- 라우팅
- 데이터 fetching
- SEO
- API
까지 모두 제공합니다.
즉
React + 백엔드 기능
까지 포함된 프레임워크입니다.
그래서 작년 Cursor 튜토리얼 대부분이
Next.js
였습니다.
특히 AI 코딩 튜토리얼에서는
Next.js
+ Tailwind
+ Vercel
조합이 가장 많았습니다.
왜냐하면
- Next.js 만든 회사 = Vercel
- 배포가 매우 쉬움
- 풀스택 개발 가능
이 때문입니다.
4. 그런데 왜 요즘 Vite를 많이 쓰냐
최근 흐름은 약간 바뀌었습니다.
많은 튜토리얼이
Vite + React
를 사용합니다.
이유는 간단합니다.
1️⃣ 훨씬 빠름
Vite는 개발 서버가 매우 빠릅니다.
2️⃣ 설정이 단순
Next.js는 기능이 많아서 구조가 복잡합니다.
3️⃣ UI 학습에 좋음
디자이너가 React UI만 공부할 때는
Next.js가 오히려 과합니다.
5. Vite vs Next.js 차이
이 차이를 이해하는 것이 중요합니다.
Vite
역할
React 프로젝트 실행 환경
즉
UI 중심
입니다.
Next.js
역할
웹 애플리케이션 프레임워크
즉
UI + 서버 + 데이터 + 라우팅
까지 포함합니다.
6. 디자이너에게 무엇이 더 좋은가
처음에는
Vite
가 훨씬 좋습니다.
이유는 단순합니다.
Vite는
React UI 구조
에 집중할 수 있기 때문입니다.
Next.js는 처음부터 이런 것들이 등장합니다.
- routing
- server component
- api
- data fetching
- middleware
초보에게는 너무 많습니다.
7. 그래서 요즘 학습 흐름은 이렇게 됩니다
지금 가장 많이 쓰는 학습 흐름은 이렇습니다.
1단계
Vite + React
(UI 구조 이해)
2단계
Tailwind
(스타일 시스템)
3단계
Git + 배포
4단계
Next.js
(실제 서비스 구조)
즉
Next.js는 보통 두 번째 단계입니다.
8. Cursor와도 이 흐름이 맞습니다
Cursor AI 코딩에서도
이 흐름이 가장 안정적입니다.
Vite
↓
React UI 생성
↓
Tailwind 스타일
↓
컴포넌트 분리
이 구조가
AI가 코드를 생성하기 가장 쉬운 구조입니다.
9. 실제 AI 스타트업 프로젝트 구조
요즘 AI 코딩 프로젝트는 대부분 이런 구조입니다.
React
Vite
Tailwind
TypeScript
그리고 서비스 단계에서는
Next.js
로 넘어갑니다.
개념을 이렇게 이해하면 됩니다.
React
= UI 만드는 라이브러리
Vite
= React 실행 환경
Next.js
= React 웹 앱 프레임워크
Figma
↓
HTML / CSS
↓
Tailwind
↓
React (Vite)
↓
Git
↓
Next.js
↓
Vercel 배포
이 순서가
디자인 → 제품 구현 흐름과 가장 잘 맞습니다.
Vite
Next Generation Frontend Tooling
vite.dev
터미널에서 React + TypeScipt + tailwindcss한번에 설치 →
npm create vite@latest my-react-app -- --template react-ts && cd my-react-app && npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -p
이 명령은 실제로 4단계 작업을 한 번에 실행하는 것입니다.
1. React + TypeScript 프로젝트 생성
2. 프로젝트 폴더로 이동
3. Tailwind CSS 설치
4. Tailwind 설정 파일 생성
이제 하나씩 풀어서 설명하겠습니다.
1️⃣ 첫 번째 부분
npm create vite@latest my-react-app -- --template react-ts
이 부분은 React + TypeScript 프로젝트를 만드는 명령입니다.
먼저 npm
npm은 Node.js 패키지 관리 프로그램입니다.
쉽게 말하면
프로그램 설치 도구
입니다.
예를 들어
React
Tailwind
Vite
같은 라이브러리를 설치할 때 사용합니다.
create vite@latest
이 의미는
Vite 프로젝트 생성
입니다.
조금 더 풀면
Vite 최신 버전으로 새 프로젝트를 만든다
라는 뜻입니다.
my-react-app
이 부분은 프로젝트 폴더 이름입니다.
그래서 실행하면 이런 폴더가 만들어집니다.
my-react-app
이 폴더 안에 React 프로젝트가 생성됩니다.
-- --template react-ts
이 부분이 조금 헷갈릴 수 있습니다.
의미는 다음과 같습니다.
React + TypeScript 템플릿 사용
여기서
react-ts
는
React + TypeScript
조합을 의미합니다.
그래서 결과적으로
React + TypeScript 프로젝트 생성
이 됩니다.
✔ 여기까지 실행하면 이런 구조가 생깁니다.
my-react-app
├ src
├ index.html
├ package.json
├ vite.config.ts
2️⃣ 두 번째 부분
cd my-react-app
이건 폴더 이동 명령어입니다.
cd 는
change directory
의 줄임말입니다.
즉
my-react-app 폴더로 이동
이라는 뜻입니다.
왜 필요하냐면
우리가 앞으로 실행할 명령들은
my-react-app 프로젝트 안에서 실행
해야 하기 때문입니다.
3️⃣ 세 번째 부분
npm install -D tailwindcss postcss autoprefixer
이 부분은 Tailwind CSS 설치입니다.
먼저 npm install
의 의미는
라이브러리 설치
입니다.
-D
-D 는
개발용 라이브러리
라는 뜻입니다.
즉
프로젝트 실행에는 필요 없지만
개발할 때 필요한 도구
입니다.
설치되는 3가지
1️⃣ tailwindcss
Tailwind CSS 본체입니다.
2️⃣ postcss
CSS를 변환하는 도구입니다.
Tailwind가 내부적으로 사용합니다.
3️⃣ autoprefixer
브라우저 호환성을 자동으로 맞춰줍니다.
예를 들어
Chrome
Safari
Edge
Firefox
각 브라우저마다 CSS 규칙이 조금 다른데
이걸 자동으로 맞춰줍니다.
✔ 실행 후 이런 폴더가 생깁니다.
node_modules
여기 안에 모든 라이브러리가 설치됩니다.
4️⃣ 네 번째 부분
npx tailwindcss init -p
이 명령은 Tailwind 설정 파일을 만드는 명령입니다.
npx
npx는
설치된 패키지를 실행
하는 명령입니다.
즉
tailwindcss 프로그램 실행
이라는 뜻입니다.
tailwindcss init
이 부분은
Tailwind 설정 파일 생성
입니다.
-p
-p 옵션은
PostCSS 설정 파일도 같이 생성
합니다.
그래서 이 명령을 실행하면
두 개의 파일이 생깁니다.
tailwind.config.js
postcss.config.js
5️⃣ && 의 의미
명령어 사이에 있는
&&
이건 “그리고 다음 명령 실행” 이라는 뜻입니다.
예를 들어
A && B && C
의 의미는
A 실행
성공하면 B 실행
성공하면 C 실행
입니다.
그래서 이 긴 명령은 실제로는 이렇게 4단계입니다.
1 React 프로젝트 생성
&&
2 프로젝트 폴더 이동
&&
3 Tailwind 설치
&&
4 Tailwind 설정 파일 생성
6️⃣ 그래서 전체 흐름을 보면
이 명령어는 결국 이렇게 말하는 것입니다.
1. React + TypeScript 프로젝트 만들기
2. 그 프로젝트 폴더로 이동
3. Tailwind CSS 설치
4. Tailwind 설정 파일 만들기
7️⃣ 이 명령어 실행 후 프로젝트 구조
실행이 끝나면 보통 이런 구조가 됩니다.
my-react-app
├ node_modules
├ src
│ ├ App.tsx
│ ├ main.tsx
│ └ index.css
│
├ index.html
├ package.json
├ tailwind.config.js
├ postcss.config.js
└ vite.config.ts
8️⃣ 마지막 단계
이제 프로젝트 실행은 다음 명령으로 합니다.
npm run dev
그러면 브라우저에서
http://localhost:5173
주소로 React 사이트가 열립니다.
9️⃣ 한 줄 요약
이 명령어는
React + TypeScript + Tailwind 프로젝트를 한 번에 만드는 자동 설치 명령
입니다.
tailwindcss가 설치되지 않았을 경우
- dir .\node_modules\tailwindcss → dir (현재위치에서파일리스트를 보여줘)
- cd my-react-app → my-react-app으로 이동
File > 폴더 열기에서 my-react-app으로 경로설정 추천
- pwd → 위치확인 /e/teaching-vibe-pofol/my-react-app 로 나와야 정상
- npm install -D tailwindcss@3 postcss autoprefixer → 설치
- npm list tailwindcss → tailwind 설치확인 명령어 >
- tailwindcss@3.x.x로 시작되면 설치되었고, empty로 나오면 설치안됨
- npx tailwindcss init -p → Tailwind 설정 파일을 자동으로 생성하는 명령어
- tailwind.config.js, postcss.config.js 파일이 생성되면 성공
tailwind.config.js 에 작성할 내용
/** @type {import('tailwindcss')
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
}, plugins: [],
}
아주 중요한 질문입니다.
이 코드는 Tailwind CSS가 어디에서 CSS 클래스를 찾아서 실제 스타일을 생성할지 알려주는 설정
Tailwind가 프로젝트를 스캔하는 규칙
을 정의하는 곳입니다.
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
이제 한 줄씩 왜 필요한지 설명하겠습니다.
1. Tailwind는 모든 CSS를 만들지 않습니다
Tailwind의 핵심 특징은
필요한 CSS만 생성한다
입니다.
예를 들어 Tailwind에는 이런 클래스가 수천 개 있습니다.
text-sm
text-lg
text-4xl
bg-blue-500
bg-red-500
flex
grid
p-4
p-8
하지만 Tailwind는 이 모든 CSS를 다 만들지 않습니다.
왜냐하면 그러면 CSS 파일이 너무 커지기 때문입니다.
그래서 Tailwind는 이렇게 작동합니다.
프로젝트 파일을 스캔
↓
사용된 클래스 찾기
↓
그 클래스만 CSS 생성
이때 어디를 스캔할지 지정하는 것이 content 설정입니다.
2. content 배열의 의미
이 부분입니다.
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
이 의미는
Tailwind야,
이 파일들을 검사해서
사용된 클래스만 CSS로 만들어라
라는 뜻입니다.
3. "./index.html"
"./index.html"
이 의미는
프로젝트 루트에 있는 index.html 검사
입니다.
예를 들어 index.html 안에
<div class="bg-black text-white">
같은 클래스가 있으면
Tailwind가 이를 감지하고
.bg-black
.text-white
CSS를 생성합니다.
4. "./src/**/*.{js,ts,jsx,tsx}"
이 부분이 핵심입니다.
"./src/**/*.{js,ts,jsx,tsx}"
이 의미를 나눠보겠습니다.
./src
src 폴더 안
*/
모든 하위 폴더 포함
예를 들어
src/components
src/pages
src/layout
모두 포함됩니다.
*.{js,ts,jsx,tsx}
이 파일들을 검사합니다.
js
ts
jsx
tsx
React 프로젝트에서 대부분 UI 코드가 이 파일 안에 있기 때문입니다.
예를 들어
src/App.tsx
src/components/Button.tsx
이런 파일 안에서
className="text-xl bg-blue-500"
같은 것을 찾습니다.
5. theme: { extend: {} }
이 부분은
Tailwind 기본 디자인 시스템을 확장하는 영역
입니다.
예를 들어 나중에 이런 걸 추가합니다.
theme: {
extend: {
colors: {
brand: "#4F46E5"
}
}
}
그러면 Tailwind에서
bg-brand
text-brand
같은 클래스를 사용할 수 있습니다.
즉 이 영역은
디자인 시스템 확장 영역
입니다.
6. plugins: []
이 부분은
Tailwind 플러그인 추가 영역
입니다.
예를 들어
forms
typography
aspect-ratio
같은 Tailwind 공식 플러그인을 사용할 때 여기에 추가합니다.
예
plugins: [
require('@tailwindcss/forms')
]
7. 맨 위의 주석
/** @type {import('tailwindcss').Config} */
이건 코드 실행과 직접 관련은 없고
IDE 타입 힌트
입니다.
즉
Cursor나 VSCode가
tailwind 설정 자동완성
을 제공하도록 돕는 역할입니다.
8. 왜 이걸 강의에서 바꾸라고 할까
Tailwind 초기 설정에서는
content가 비어있는 경우가 많습니다.
예를 들어
content: []
이 상태에서는
Tailwind가 아무 파일도 스캔하지 않습니다.
그래서 결과적으로
Tailwind 스타일이 적용되지 않습니다.
그래서 반드시 이렇게 설정해야 합니다.
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
]
9. 실제 작동 예
예를 들어 App.tsx에 이런 코드가 있다고 가정합니다.
<div className="text-4xl font-bold text-blue-600">
Hello
</div>
Tailwind는
src/App.tsx
를 스캔합니다.
그리고
text-4xl
font-bold
text-blue-600
클래스를 발견합니다.
그 다음 이 3개의 CSS만 생성합니다.
10. 디자이너 관점에서 이해하기
Tailwind 설정은 이렇게 생각하면 쉽습니다.
Figma 디자인 토큰
↓
Tailwind 클래스
↓
사용된 클래스만 CSS 생성
즉
content
=
Tailwind가 디자인을 적용할 파일 위치
라고 이해하면 됩니다.
src/index.css파일에 작성
Tailwind가 실제 CSS를 생성해서 프로젝트에 적용하도록 하는 핵심 명령입니다.
즉 이 코드는
@tailwind base;
@tailwind components;
@tailwind utilities;
의미상으로는
Tailwind CSS 엔진에게
기본 스타일 + 컴포넌트 스타일 + 유틸리티 스타일을
이 CSS 파일에 생성해라
라는 지시문입니다.
조금 더 쉽게 설명하겠습니다.
1. Tailwind는 기본적으로 CSS 파일이 아닙니다
많은 사람들이 Tailwind를 이렇게 생각합니다.
Tailwind = CSS 파일
하지만 실제로는
Tailwind = CSS 생성 엔진
입니다.
즉
Tailwind는
프로젝트를 스캔
→ 사용된 클래스 찾기
→ 필요한 CSS만 생성
이 과정을 거칩니다.
그런데 어디에 CSS를 생성할지 알려줘야 합니다.
그 역할을 하는 것이 바로
index.css
입니다.
2. 그래서 index.css에 Tailwind 지시문을 넣습니다
이 코드가 바로 그 역할입니다.
@tailwind base;
@tailwind components;
@tailwind utilities;
이건 CSS가 아니라
Tailwind에게 CSS를 생성하라고 지시하는 명령
입니다.
3. 각각의 의미
이 세 줄은 Tailwind의 3가지 레이어를 불러옵니다.
① Base
@tailwind base;
이것은
브라우저 기본 스타일 초기화
입니다.
예를 들어
브라우저는 기본적으로 이런 스타일이 있습니다.
h1 font-size
button style
margin
padding
브라우저마다 조금씩 다릅니다.
그래서 Tailwind는
normalize
reset css
를 적용합니다.
예
h1, h2, h3 {
margin: 0;
}
같은 것들입니다.
즉
브라우저 기본 스타일을 정리하는 레이어
입니다.
② Components
@tailwind components;
이것은
재사용 가능한 컴포넌트 스타일
을 넣는 레이어입니다.
예를 들어 나중에 이런 것을 만들 수 있습니다.
.btn {
@apply px-4 py-2 bg-blue-500 text-white rounded;
}
이런 스타일을
컴포넌트 레이어
에 넣습니다.
③ Utilities
@tailwind utilities;
이것이 Tailwind의 핵심입니다.
여기에
text-xl
bg-blue-500
flex
grid
p-4
m-2
rounded-lg
같은
유틸리티 클래스
가 생성됩니다.
예를 들어
.text-xl {
font-size: 1.25rem;
}
.bg-blue-500 {
background-color: #3b82f6;
}
이런 CSS가 생성됩니다.
4. 왜 세 개로 나눌까?
Tailwind는 CSS 우선순위 문제를 해결하기 위해 레이어를 나눕니다.
순서는 항상 이렇습니다.
Base
↓
Components
↓
Utilities
즉
Utilities가 가장 강력
합니다.
그래서 Tailwind 클래스가 쉽게 덮어씌워집니다.
예
<button class="btn bg-red-500">
이 경우
bg-red-500
가 우선 적용됩니다.
5. 만약 이 코드를 넣지 않으면?
예를 들어
@tailwind base;
@tailwind components;
@tailwind utilities;
이 코드가 없으면
Tailwind는
CSS를 생성하지 않습니다
그래서 이런 코드가 있어도
<div class="text-4xl bg-blue-500">
아무 스타일도 적용되지 않습니다.
6. 전체 흐름
Tailwind 작동 구조는 이렇습니다.
React 코드 작성
↓
className="text-xl bg-blue-500"
↓
Tailwind가 파일 스캔
↓
필요한 CSS 생성
↓
index.css에 삽입
↓
브라우저 적용
이 과정의 CSS 생성 위치가 index.css입니다.
7. 실제 프로젝트 구조
보통 구조는 이렇게 됩니다.
src
├ App.tsx
├ main.tsx
└ index.css
그리고 main.tsx에서
import './index.css'
로 CSS를 불러옵니다.
즉 흐름은
index.css
↓
Tailwind CSS 생성
↓
main.tsx import
↓
React 전체 적용
입니다.
8. 디자이너 관점에서 이해
디자인 시스템 관점에서는 이렇게 이해하면 쉽습니다.
Figma Design Tokens
↓
Tailwind Utility Classes
↓
index.css에서 CSS 생성
↓
React UI 적용
즉
index.css
=
Tailwind CSS 출력 파일
입니다.
핵심 요약
@tailwind base;
@tailwind components;
@tailwind utilities;
이 코드는
Tailwind에게
1 브라우저 기본 스타일 적용
2 컴포넌트 스타일 적용
3 유틸리티 클래스 생성
하라고 지시하는 CSS 생성 명령입니다.
원하시면 다음으로 디자이너에게 가장 중요한 개념 하나를 설명드릴 수 있습니다.
바로
왜 Tailwind가 디자인 시스템과 매우 잘 맞는지
입니다.
특히
Figma Variables → Tailwind Tokens → React UI
- 왜 Tailwind가 디자인 시스템과 잘 맞는가
- 왜 우리가 저런 설정들을 해야 하는가
이걸 아주 쉽게 말하면,
Tailwind는 “디자인 규칙”을 코드에서 반복해서 지키기 쉽게 만들어주는 도구이고,
설정 파일들은 그 규칙이 프로젝트 안에서 제대로 작동하도록 길을 깔아주는 작업입니다.
하나씩 천천히 설명드리겠습니다.
문제는 Figma 안의 규칙이 코드까지 안 가면 의미가 줄어든다는 것
디자인에서 규칙을 잘 만들어도
개발 코드에서 이렇게 되면 문제가 생깁니다.
padding: 17px;
padding: 21px;
padding: 29px;
border-radius: 11px;
color: #1f59ff;
이렇게 개발 단계에서 값이 제멋대로 들어가면
Figma에서 정리한 규칙이 깨집니다.
즉,
디자인 시스템은 Figma 안에서만 존재하면 반쪽짜리입니다.
코드에서도 같은 규칙이 지켜져야
진짜 디자인 시스템이 됩니다.
여기서 Tailwind가 왜 잘 맞는가
이제 핵심입니다.
Tailwind는 기본적으로
작은 스타일 조각을 정해진 방식으로 조합해서 쓰는 구조
입니다.
예를 들어 이런 식입니다.
- p-4 = 여백
- text-xl = 글자 크기
- rounded-lg = radius
- bg-blue-500 = 배경색
- max-w-7xl = 최대 폭
- md:grid-cols-2 = 반응형 구조
즉 Tailwind는 처음부터
규칙 있는 값들을 조합해서 쓰는 방식
에 가깝습니다.
이게 디자인 시스템과 잘 맞는 이유입니다.
일반 CSS와 Tailwind의 차이
일반 CSS는 이렇게 쓸 수 있습니다.
.card {
padding: 13px;
border-radius: 11px;
font-size: 15px;
}
물론 가능합니다.
하지만 이렇게 하다 보면 값이 제각각 되기 쉽습니다.
반면 Tailwind는 보통 이렇게 갑니다.
<div class="p-4 rounded-lg text-base">
즉
- spacing도 정해진 단계
- radius도 정해진 단계
- typography도 정해진 단계
를 쓰게 유도합니다.
그래서 Tailwind는
아무 값이나 막 넣는 방식보다, 정리된 규칙 안에서 만드는 방식에 가깝습니다.
이게 디자인 시스템과 아주 잘 맞습니다.
쉽게 비유하면 디자인 시스템은 레고 조립 설명서 같은 것입니다.
- 빨간 블록은 이 용도
- 긴 블록은 이 용도
- 같은 부품은 같은 방식으로 사용
Tailwind는 그 설명서에 맞게
정리된 레고 부품 상자를 제공하는 느낌입니다.
반면 일반 CSS는
찰흙처럼 뭐든 만들 수 있습니다.
찰흙은 자유롭지만
규칙 없이 쓰면 모양이 계속 달라집니다.
레고는 제약이 있지만
규칙적으로 만들기 쉽습니다.
그래서 디자인 시스템에는 Tailwind가 더 잘 맞습니다.
디자이너 관점에서 Tailwind가 좋은 진짜 이유
Tailwind가 좋은 이유는 단순히 빠르기 때문이 아닙니다.
진짜 이유는
디자인을 “감각”이 아니라 “규칙”으로 유지하게 도와주기 때문입니다.
예를 들어 디자이너는 원래 감각적으로 이런 판단을 합니다.
- 여기 여백은 조금 더 넓게
- 여긴 살짝 더 둥글게
- 여기 글자는 조금 더 크게
감각적으로는 맞을 수 있습니다.
하지만 제품 전체에서는 일관성이 무너질 수 있습니다.
Tailwind는 이런 순간에
정해진 scale 안에서 생각하게 만드는 습관을 줍니다.
즉 감각을 죽이는 게 아니라,
감각을 시스템 안에서 쓰게 만드는 도구
입니다.
그럼 왜 저런 설정을 해야 하나
이제 두 번째 질문입니다.
Tailwind가 좋다는 것은 알겠는데
왜 설정 파일을 건드려야 하느냐는 것입니다.
아주 쉽게 말하면,
Tailwind를 프로젝트 안에서 제대로 작동하게 하려면 “규칙 적용 범위”를 알려줘야 하기 때문입니다.
Tailwind는 그냥 깔기만 한다고 다 되는 것이 아닙니다.
어디에서 클래스를 찾을지,
어디에 CSS를 생성할지,
어떤 확장 규칙을 쓸지
알려줘야 합니다.
그래서 설정이 필요합니다.
첫 번째 설정: tailwind.config.js
이 파일은 쉽게 말하면
Tailwind의 작업 지시서
입니다.
여기서 가장 중요한 부분이 content입니다.
예를 들면 이런 코드였죠.
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
]
이 뜻은
“Tailwind야, 이 파일들을 뒤져서 사용된 클래스만 CSS로 만들어라”
입니다.
왜 이게 필요하냐면
Tailwind는 모든 CSS를 다 만드는 게 아니라
실제로 쓴 것만 생성하기 때문입니다.
예를 들어 App.tsx 안에
<div className="text-4xl bg-blue-500 p-4">
가 있으면 Tailwind는 그걸 보고
- text-4xl
- bg-blue-500
- p-4
이 세 개만 CSS로 만듭니다.
즉 content는
Tailwind가 어디를 읽어야 하는지 알려주는 설정
입니다.
두 번째 설정: index.css 안의 세 줄
이 부분도 있었죠.
@tailwind base;
@tailwind components;
@tailwind utilities;
이건 쉽게 말하면
“Tailwind야, 네 스타일을 이 CSS 파일 안에 실제로 넣어라”
라는 뜻입니다.
하나씩 보면:
- base = 브라우저 기본 스타일 정리
- components = 재사용 스타일이 들어갈 자리
- utilities = Tailwind 핵심 클래스들
즉 이 세 줄이 있어야
Tailwind가 실제 CSS를 만들어서 프로젝트에 적용할 수 있습니다.
이게 없으면 Tailwind 클래스를 써도 화면에 아무것도 적용되지 않습니다.
12. 세 번째 설정: theme extend
이 부분은 보통 이렇게 생깁니다.
theme: {
extend: {},
}
이건 지금 당장은 비어 있어도 괜찮습니다.
하지만 나중에 여기에 여러분의 디자인 시스템을 넣게 됩니다.
예를 들면:
- 브랜드 컬러
- 커스텀 spacing
- custom radius
- custom font family
즉 이 영역은
“우리 프로젝트만의 디자인 규칙을 추가하는 공간”
입니다.
왕초보 기준으로는 이렇게 이해하시면 됩니다.
Tailwind 기본 규칙 위에
우리 브랜드 규칙을 덧붙이는 자리
13. 왜 이런 구조가 디자인 시스템과 잘 맞는가
이제 전체를 연결해서 보겠습니다.
디자인 시스템은 원래 이런 흐름입니다.
디자인 규칙 정리
→ 반복 사용
→ 일관성 유지
→ 나중에 쉽게 수정
Tailwind도 거의 똑같습니다.
정해진 클래스 사용
→ 반복 사용
→ 일관성 유지
→ 나중에 확장 가능
그래서 둘이 잘 맞습니다.
특히 Figma에서 이미
- color
- typography
- spacing
- radius
를 정리해두셨다면,
그걸 Tailwind 쪽에서는
- colors
- fontSize
- spacing
- borderRadius
같은 규칙으로 이어갈 수 있습니다.
즉,
Figma의 규칙이 Tailwind의 규칙으로 번역되기 쉬운 구조
입니다.
14. 왕초보가 이해해야 할 진짜 핵심
Tailwind를 그냥 “개발자가 쓰는 빠른 CSS 문법”으로만 보면 반만 이해한 것입니다.
진짜 핵심은 이겁니다.
Tailwind는 화면을 빠르게 만드는 도구이기도 하지만,
그보다 더 중요한 것은 “디자인 규칙을 코드에서도 지키게 해주는 도구”라는 점입니다.
그리고 설정 파일들은
그 규칙이 프로젝트 안에서 정확히 작동하도록 연결해주는 장치들입니다.
15. 아주 쉬운 비유로 최종 정리
한 번 더 비유로 정리해보겠습니다.
디자인 시스템
브랜드 매뉴얼, 인테리어 규칙, 가구 규격표
Tailwind
그 규격표에 맞는 조립식 부품 상자
tailwind.config.js
어떤 부품을 쓸지 정하는 설계 규칙서
index.css의 @tailwind
그 부품들을 실제 공사 현장에 가져다 놓는 명령
즉:
- 디자인 시스템 = 규칙
- Tailwind = 규칙에 맞는 스타일 부품
- 설정 파일 = 그 부품이 제대로 작동하게 하는 안내서
16. 한 문장으로 정리하면
Tailwind가 디자인 시스템과 잘 맞는 이유는,
디자인을 매번 새로 만드는 것이 아니라 정해진 규칙 안에서 반복 가능하게 만들어주기 때문이고,
설정 파일들은 그 규칙이 실제 프로젝트에서 제대로 읽히고, 생성되고, 적용되게 하기 위해 필요합니다.
17. 지금 사용자님 관점에서 가장 중요한 포인트
사용자님은 이미 Figma에서 Variables를 정리하셨기 때문에,
이제 Tailwind를 배우는 것은 단순히 CSS를 배우는 것이 아닙니다.
이건
Figma에서 만든 디자인 규칙을 실제 코드 세계로 옮기는 첫 단계
입니다.
그래서 지금 하시는 학습은
그냥 “코딩 입문”이 아니라,
디자인 시스템을 실제 구현 시스템으로 연결하는 훈련
이라고 보시면 됩니다.