Олег Марков
Как подключить Tailwind к React
Введение
Tailwind CSS — это популярная CSS-фреймворк, который предлагает утилитарный подход к стилизации компонентов. Вместо написания собственных классов и каскадных стилей, вы строите интерфейс, комбинируя готовые классы из набора Tailwind. Такой подход отлично сочетается с компонентной архитектурой React, позволяя быстро создавать адаптивные и читабельные интерфейсы.
В этой статье я подробно расскажу, как подключить Tailwind к проекту на React. Шаг за шагом вы увидите не только базовую интеграцию, но и настройки для работы с Create React App, Vite и Next.js. Отдельное внимание уделю настройке Tailwind для поддержки кастомных настроек, работе с постпроцессорами, автоматическому удалению неиспользуемых стилей (purge), организации структуры проекта и рассмотрю примеры, которые помогут сразу начать разработку.
Особенности интеграции Tailwind и React
Прежде чем переходить к инструкциям, уточню основные моменты, которые стоит знать:
- Tailwind легко интегрируется с любым фронтенд-стеком, но в React есть пара особенностей: классы нужно указывать как
className
, чтобы избежать конфликтов с зарезервированным словомclass
. - Для Tailwind нужно немного больше настройки, чем для обычных CSS-фреймворков. Зато результат — простота поддержки и скорость работы в долгосрочной перспективе.
- Tailwind очень эффективен в крупных приложениях: помогает не только ускорить вёрстку, но и уменьшить размер итогового файла стилей благодаря механизму purge.
Установка Tailwind в проект на React
Давайте разберём несколько популярных сценариев установки.
Использование Create React App (CRA)
Если у вас проект создан с помощью create-react-app
, настройка Tailwind происходит в несколько шагов.
1. Создайте проект (или используйте существующий)
npx create-react-app my-app
cd my-app
2. Установите Tailwind, PostCSS и autoprefixer
npm install -D tailwindcss postcss autoprefixer
# или с использованием yarn
yarn add --dev tailwindcss postcss autoprefixer
3. Инициализируйте конфиг Tailwind
npx tailwindcss init -p
- Будут созданы два файла:
tailwind.config.js
иpostcss.config.js
.
4. Настройте purge-классы
В tailwind.config.js
укажите пути ко всем файлам, где используются классы Tailwind. Например:
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}", // Ищет классы во всех файлах src
],
theme: {
extend: {},
},
plugins: [],
}
5. Импортируйте Tailwind в главный файл стилей
Создайте (или откройте существующий) файл src/index.css
и вставьте следующие строки:
@tailwind base;
@tailwind components;
@tailwind utilities;
/* Эти директивы импортируют основные стили Tailwind */
6. Импортируйте стили в приложение
В src/index.js
или src/index.tsx
(в зависимости от используемого языка) убедитесь, что вы импортируете этот CSS:
import './index.css';
// Импортирует стили Tailwind во всё приложение
7. Запустите приложение
npm start
# или
yarn start
Tailwind уже работает! Можно использовать классы прямо в JSX:
function App() {
return (
<div className="bg-blue-500 text-white p-6 rounded-lg shadow-lg">
{/* Здесь применяются классы Tailwind */}
Привет, Tailwind!
</div>
);
}
Интеграция с Vite
Если ваш проект создан через Vite (более современный и быстрый инструмент сборки), процесс аналогичен, но чуть компактнее:
- Создайте проект:
npm create vite@latest my-vite-app --template react
cd my-vite-app
- Установите Tailwind:
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
- Укажите пути для содержимого (
content
) вtailwind.config.js
:
module.exports = {
content: [
"./index.html",
"./src/**/*.{js,jsx,ts,tsx}"
],
// Остальные параметры...
}
- Импортируйте директивы Tailwind в
src/index.css
(или вmain.css
, если вы его переименуете):
@tailwind base;
@tailwind components;
@tailwind utilities;
- Импортируйте css-файл в
src/main.jsx
:
import './index.css';
- Запустите приложение:
npm run dev
Tailwind CSS — это популярный CSS-фреймворк, который предоставляет набор готовых стилей, позволяющих быстро и легко создавать пользовательские интерфейсы. Интеграция Tailwind с React позволяет использовать его преимущества в React-приложениях. Если вы хотите узнать, как подключить Tailwind к React и использовать его для стилизации компонентов — приходите на наш большой курс Основы React, React Router и Redux Toolkit. На курсе 177 уроков и 17 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Интеграция с Next.js
Для работы с Next.js процесс еще проще:
- Создайте проект:
npx create-next-app my-next-tailwind-app
cd my-next-tailwind-app
- Установите необходимые зависимости:
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
- Настройте content в
tailwind.config.js
:
module.exports = {
content: [
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}"
]
}
- В папку
styles/
добавьте или откройтеglobals.css
и вставьте:
@tailwind base;
@tailwind components;
@tailwind utilities;
- Убедитесь, что в файле
_app.js
импортируется этот css-файл:
import '../styles/globals.css'
- Запустите приложение:
npm run dev
Тонкости настройки Tailwind для React
Purge и размер итогового файла
Tailwind генерирует очень большой CSS-файл, если не очищать (purge) неиспользуемые стили. Для этого всегда важно проверять, что в файле конфигурации задано правильное значение поля content
.
Например, размещая:
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
— вы указываете Tailwind, где искать используемые классы и только их включать в итоговый билд.
Использование кастомных настроек
Вы можете расширить стандартную тему Tailwind, добавляя собственные цвета, шрифты и т.д. Пример:
// tailwind.config.js
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {
colors: {
'custom-blue': '#0077ff',
},
fontFamily: {
'display': ['Oswald', 'sans-serif'],
}
},
},
plugins: [],
}
Теперь вы можете использовать новые классы, например, bg-custom-blue
или font-display
прямо в JSX.
Tailwind и динамические классы
Будьте внимательны: Tailwind ищет только статические классы в вашем коде. Если вы создаете классы динамически, например, так:
<div className={`bg-${isActive ? "blue" : "red"}-500`}></div>
— Tailwind НЕ включит эти стили в итоговый файл. В таких случаях используйте полный путь класса или утверждения типа:
<div className={isActive ? "bg-blue-500" : "bg-red-500"}></div>
Или добавляйте классы-исключения в конфиг (safelist
).
Использование Tailwind с CSS-in-JS
Tailwind отлично сочетается с такими подходами, как Styled Components или Emotion. Но помните: Tailwind работает на уровне классов, а не в JS-шаблонах, поэтому используйте его либо исключительно, либо комбинируя стили.
Структура проекта и советы по организации
- index.css — Основной файл для подключения Tailwind, дополнительный кастомный CSS можно размещать после import директив Tailwind.
- src/components/ — Рекомендуется выносить компоненты в отдельную папку и применять классы Tailwind прямо внутри них.
- tailwind.config.js — Ваши глобальные настройки (цвета, шрифты, breakpoint'ы).
- postcss.config.js — Не требует изменения, если не подключаете дополнительные плагины.
Практика: Примеры использования классов Tailwind в React
Посмотрим на несколько конкретных примеров.
Пример: Карточка с Tailwind
function Card({ title, children }) {
return (
<div className="max-w-sm rounded overflow-hidden shadow-lg bg-white p-6">
<div className="font-bold text-xl mb-2">{title}</div>
<p className="text-gray-700 text-base">{children}</p>
</div>
);
}
// Использование:
<Card title="React + Tailwind">
Здесь вы видите простую карточку, стилизованную с помощью классов Tailwind.
</Card>
Комментарии к коду:
max-w-sm
ограничивает ширину карточкиrounded
добавляет скруглениеoverflow-hidden
скрывает излишки содержимогоshadow-lg
добавляет теньbg-white
— фоновый цветp-6
— внутренние отступы- Дочерние элементы получают стили текста и отступов
Пример: Кнопка с разными состояниями
function Button({ children, onClick, active }) {
return (
<button
type="button"
onClick={onClick}
className={
active
? "bg-blue-600 text-white px-4 py-2 rounded hover:bg-blue-700 transition-all"
: "bg-gray-200 text-gray-800 px-4 py-2 rounded hover:bg-gray-300 transition-all"
}
>
{children}
</button>
);
}
// Вызывается так:
<Button active={true}>Активная кнопка</Button>
<Button active={false}>Неактивная кнопка</Button>
Комментарии:
- В зависимости от пропса
active
применяется разный набор классов. - Классы hover и transition делают плавное изменение background при наведении.
Пример: Списки и элементы
function List({ items }) {
return (
<ul className="divide-y divide-gray-300">
{items.map((item, idx) => (
<li key={idx} className="py-2 px-4 hover:bg-gray-100">
{/* Каждый элемент списка с отступами и фоном при наведении */}
{item}
</li>
))}
</ul>
);
}
Использование Tailwind с TypeScript в React
Если пишете на TypeScript, настройка почти не меняется. В tailwind.config.js
не забудьте добавить расширение ts
:
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
JXS-файлы и TSX-файлы анализируются Tailwind одинаково, отличий нет.
Tailwind-плагины и расширения
Для повышения удобства разработки можно использовать ряд полезных инструментов:
- Prettier-plugin-tailwindcss — автоматически сортирует классы Tailwind в едином стиле при сохранении файлов.
- Headless UI — набор готовых компонентов без стилей, создан специально для работы с Tailwind.
- Heroicons — библиотека SVG-иконок от авторов Tailwind.
- VSCode Extensions — выделяют и подпсказывают возможные классы Tailwind.
Для установки prettier-плагина:
npm install -D prettier prettier-plugin-tailwindcss
Отладка классов Tailwind и работа с DevTools
- Через вкладку "Elements" в инструментах разработчика Chrome можно увидеть, как применяются ваши классы.
- Tailwind автоматически генерирует уникальные правила для каждого класса — их легко найти через поиск по стилям.
- Для долгой строки с классами удобно использовать редактор с поддержкой автоподсказок (напр., VSCode + Tailwind CSS IntelliSense).
Заключение
Интеграция Tailwind CSS с React позволяет быстро и гибко оформлять интерфейс, избегая создания лишних CSS-файлов и классов. Благодаря простоте настройки и мощным возможностям по кастомизации, Tailwind становится отличным выбором как для небольших проектов, так и для масштабных приложений. Использование утилитарного подхода ускоряет разработку, а purge-классы позволяют сделать итоговый проект лёгким и быстрым.
В современном React-стеке Tailwind — распространённый и поддерживаемый инструмент, интеграция которого занимает считанные минуты. Если вы стремитесь к скорости и качеству вёрстки, попробуйте Tailwind уже в первом вашем компоненте!
Tailwind упрощает стилизацию, но для разработки сложных приложений требуется умение управлять состоянием и роутингом. На курсе Основы React, React Router и Redux Toolkit вы освоите все необходимые инструменты. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в основы React уже сегодня.
Частозадаваемые технические вопросы по теме статьи и ответы на них
1. Как добавить свои цвета, размеры и отступы в Tailwind?
Откройте tailwind.config.js
и используйте раздел extend
внутри theme
. Например:
module.exports = {
theme: {
extend: {
colors: {
'mycolor': '#123456'
},
spacing: {
'128': '32rem'
}
}
}
}
Теперь вы можете использовать классы вида bg-mycolor
и p-128
.
2. Почему стили Tailwind не применяются после сборки?
Проверьте поле content
в tailwind.config.js
. Если указаны только неправильные пути, purge удалит все классы. Убедитесь, что перечислены все папки и типы файлов, где есть классы: "./src/**/*.{js,jsx,ts,tsx}"
.
3. Что делать, если классы применяются динамически (через переменные)?
Если классы создаются через шаблонные строки (например, bg-${color}-500
), Tailwind их не увидит. Используйте конкретные строки или добавьте такие классы в поле safelist
вашего конфига.
4. Как использовать Tailwind только для определённых компонентов?
Импортируйте главный CSS-файл Tailwind только в те JS/JSX-файлы, где требуется, или используйте кастомные слои Tailwind. Однако чаще всего Tailwind применяется глобально для всего приложения.
5. Можно ли использовать Tailwind вместе с другими CSS-фреймворками?
Да, но следите за конфликтами классов и спецификой стилей. Рекомендуется выбирать либо Tailwind целиком, либо интегрировать только часть утилит поверх существующих решений, постепенно заменяя старый CSS на Tailwind-классы.
Постройте личный план изучения React до уровня Middle — бесплатно!
React — часть карты развития Frontend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Бесплатные лекции
Все гайды по React
Лучшие курсы по теме

React и Redux Toolkit
Антон Ларичев
TypeScript с нуля
Антон Ларичев