본문 바로가기
inspiration

Vite로 React + TypeScript + Tailwind CSS를 설치

by Artist'sNote 2026. 3. 15.

https://vite.dev/

 

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 배포

이 순서가

디자인 → 제품 구현 흐름과 가장 잘 맞습니다.

https://vite.dev/

 

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가 설치되지 않았을 경우

  1. dir .\node_modules\tailwindcss → dir (현재위치에서파일리스트를 보여줘)
  2. cd my-react-app → my-react-app으로 이동
  File > 폴더 열기에서 my-react-app으로 경로설정 추천
  1. pwd → 위치확인 /e/teaching-vibe-pofol/my-react-app 로 나와야 정상
  2. npm install -D tailwindcss@3 postcss autoprefixer → 설치
  3. npm list tailwindcss → tailwind 설치확인 명령어 >
  4. tailwindcss@3.x.x로 시작되면 설치되었고, empty로 나오면 설치안됨
  5. 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

 

 

  1. 왜 Tailwind가 디자인 시스템과 잘 맞는가
  2. 왜 우리가 저런 설정들을 해야 하는가

이걸 아주 쉽게 말하면,

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에서 만든 디자인 규칙을 실제 코드 세계로 옮기는 첫 단계

입니다.

그래서 지금 하시는 학습은
그냥 “코딩 입문”이 아니라,

디자인 시스템을 실제 구현 시스템으로 연결하는 훈련

이라고 보시면 됩니다.