Олег Марков
Интеграция Tailwind CSS в Nuxt
Введение
Tailwind CSS — это утилитарный CSS-фреймворк, который за последние годы стал невероятно популярным среди современных фронтенд-разработчиков. Благодаря возможностям быстрого прототипирования, высокой гибкости и минимальному количеству стилей по умолчанию Tailwind позволяет создавать выразительные пользовательские интерфейсы с минимальными усилиями.
Nuxt, в свою очередь, является фреймворком для создания универсальных Vue-приложений с поддержкой SSR (Server Side Rendering), статической генерации (SSG) и еще множеством мощных возможностей.
Интеграция Tailwind CSS в Nuxt позволяет объединить силу декларативного подхода Vue и дизайнерскую гибкость Tailwind. В этой статье вы узнаете, как правильно добавить Tailwind в проект на Nuxt, настроить производительность, организовать компоненты и улучшить процесс разработки.
Установка Tailwind CSS в проект Nuxt
Для начала давайте рассмотрим, как установить Tailwind CSS в Nuxt 3 — самой актуальной версии Nuxt. Инструкции аналогичны для Nuxt 2, но имеют несколько отличий, которые я тоже объясню.
Создание нового проекта Nuxt
Если у вас уже есть проект, этот шаг можно пропустить. Но на всякий случай приведу пример создания проекта на Nuxt 3:
# Создание нового проекта Nuxt 3 с помощью create-nuxt-app
npx nuxi init my-nuxt-app
cd my-nuxt-app
npm install
Здесь мы используем nuxi — CLI для Nuxt 3.
Установка Tailwind CSS и необходимых зависимостей
Nuxt 3 предлагает специальный модуль @nuxtjs/tailwindcss
, который существенно облегчает интеграцию Tailwind:
# Установка Nuxt Tailwind CSS модуля
npm install -D @nuxtjs/tailwindcss
Этот модуль подключит Tailwind к вашему проекту, создаст необходимые конфиги и обеспечит корректную работу с autoprefixer и postcss.
Добавление модуля в nuxt.config.ts
Теперь подключим Tailwind к проекту. Для этого откройте файл nuxt.config.ts
(или nuxt.config.js
, если не используете TypeScript) и добавьте модуль:
export default defineNuxtConfig({
modules: [
'@nuxtjs/tailwindcss'
// другие модули, если есть
]
})
Это все, что требуется для основного подключения Tailwind к Nuxt 3.
Генерация базовой конфигурации Tailwind
Если нужно кастомизировать Tailwind, создайте собственный конфиг. Для генерации файла конфигурации выполните:
npx tailwindcss init
В проекте появится файл tailwind.config.js
, в котором вы сможете настраивать темы, расширять дизайн-систему и добавлять пользовательские плагины.
Пример базового конфига:
// tailwind.config.js
module.exports = {
content: [
'./components/**/*.{vue,js}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
'./app.vue',
'./plugins/**/*.{js,ts}',
],
theme: {
extend: {},
},
plugins: [],
}
Поле content
важно для корректной работы purge — удаления неиспользуемых стилей на проде, что уменьшает размер итогового CSS.
Настройка и возможности Tailwind CSS в Nuxt
После интеграции можно использовать Tailwind CSS классы во всех ваших компонентах и страницах. Давайте рассмотрим самые частые задачи и особенности работы.
Организация стилей в Nuxt с Tailwind
Теперь вы сможете использовать Tailwind в любых Vue-файлах. Вот простой пример компонента:
<template>
<button class="px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition">
Кнопка Tailwind
</button>
</template>
Здесь мы используем классы Tailwind напрямую в шаблоне компонента.
Tailwind CSS — это популярный CSS-фреймворк, который позволяет быстро и удобно стилизовать веб-приложения. Интеграция Tailwind CSS в Nuxt позволяет использовать все преимущества этого фреймворка и создавать стильные и современные интерфейсы. Если вы хотите детальнее погрузиться в мир Nuxt, освоить все его тонкости и стать настоящим профессионалом — приходите на наш большой курс Nuxt - fullstack Vue фреймворк. На курсе 129 уроков и 13 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Использование Tailwind с глобальными стилями
Если вам нужно использовать какие-то глобальные правила (например, базовые импорты Tailwind), создайте файл assets/css/tailwind.css
со следующим содержимым:
@tailwind base;
@tailwind components;
@tailwind utilities;
В Nuxt 3 не обязательно прописывать этот файл в конфиге — модуль сам найдет его по имени. Но если файл называется иначе, пропишите его явно в nuxt.config.ts:
export default defineNuxtConfig({
css: [
'~/assets/css/tailwind.css',
],
})
Это важно, если вы хотите расширять Tailwind кастомными стилями и перемешивать их с утилитами Tailwind.
Кастомизация и расширение Tailwind CSS
Темизация и кастомные цвета
Tailwind легко кастомизируется. В файле tailwind.config.js
вы можете расширять тему:
module.exports = {
theme: {
extend: {
colors: {
brand: '#1B5CFE',
}
},
},
}
Теперь можно использовать класс bg-brand
, чтобы добавить ваш собственный цвет.
Использование своих классов и компонентов
Часто дизайнеры просят вас реализовать свой набор компонентов с фирменным стилем. Покажу, как создать базовый компонент, обертывающий Tailwind классы:
<!-- components/BaseButton.vue -->
<template>
<button
:class="[
'px-4 py-2 rounded transition font-medium',
color === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700' : '',
color === 'secondary' ? 'bg-gray-200 text-black hover:bg-gray-400' : ''
]"
>
<slot />
</button>
</template>
<script setup>
defineProps({
color: {
type: String,
default: 'primary'
}
})
</script>
Теперь используйте этот компонент во всем проекте:
<BaseButton color="primary">Главная кнопка</BaseButton>
<BaseButton color="secondary">Вторичная кнопка</BaseButton>
Это облегчает поддержку единого визуального стиля.
Использование Tailwind с Nuxt Layouts и Pages
Tailwind работает без ограничений во всех Nuxt-структурах — layouts, страницах, компонентах. Для глобального оформления добавьте базовые классы в разметку app.vue
или default layout:
<!-- layouts/default.vue -->
<template>
<div class="min-h-screen bg-gray-50">
<NuxtPage />
</div>
</template>
Такое оформление помогает унифицировать фон и внешний вид всего приложения.
Взаимодействие Tailwind CSS с SCSS/SASS/LESS
В Nuxt вы можете использовать Tailwind параллельно с препроцессорами. Например, если вы все еще используете SCSS для кастомных миксинов и переменных, просто импортируйте SCSS-файлы в nuxt.config.ts:
export default defineNuxtConfig({
css: [
'~/assets/css/tailwind.css',
'~/assets/scss/main.scss',
],
})
Tailwind будет обрабатывать свои стили, а SCSS — свои.
Настройки оптимизации Tailwind в Nuxt
Tailwind по умолчанию удаляет неиспользуемые классы при продакшен-сборке. Иногда возникают вопросы, как контролировать этот процесс.
Purge CSS и настройки content-полей
В файле tailwind.config.js
:
module.exports = {
content: [
'./components/**/*.{vue,js}',
// Добавляйте свои пути здесь
],
}
Если вы создаете шаблоны динамически (например, с помощью v-html), добавьте туда соответствующие классы, иначе Tailwind удалит стили при сборке.
Минификация и autoprefixer
Nuxt обрабатывает CSS с помощью PostCSS. Модуль @nuxtjs/tailwindcss уже включает autoprefixer и минификацию по умолчанию, ничего делать не нужно.
Tailwind CSS и SSR в Nuxt
Tailwind отлично работает с серверным рендерингом из коробки. Вам не нужно специально настраивать SSR для Tailwind — всё будет работать корректно.
Если же вы используете сторонние плагины, убедитесь, что они поддерживают SSR и корректно работают как на сервере, так и на клиенте.
Использование Tailwind CSS в Nuxt с кастомизацией breakpoints
Вы можете переопределять media-запросы прямо в конфиге Tailwind:
module.exports = {
theme: {
extend: {
screens: {
xs: '480px',
},
},
},
}
Теперь xs:
будет доступен как префикс. Например: xs:bg-red-500
— применяется начиная с 480px ширины.
Tailwind CSS и динамические классы во Vue
Если классы генерируются динамически, убедитесь, что Tailwind не удаляет их из финальной сборки. Например:
<template>
<div :class="`bg-${color}-500`"></div>
</template>
В этом случае лучше явно указать соответствующие классы в safelist в конфиге:
module.exports = {
safelist: [
'bg-red-500', 'bg-blue-500', 'bg-green-500'
// и другие используемые классы
],
}
Примеры расширенной интеграции и полезные техники
Использование Tailwind CSS plugins
Tailwind поддерживает множество плагинов, которые позволяют добавлять новые утилиты, эффекты и компоненты. Например, добавление форм и типографии:
npm install -D @tailwindcss/forms @tailwindcss/typography
Затем добавьте их в конфиг:
module.exports = {
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
],
}
Теперь у вас есть набор утилит для форм и стилизованных markdown-контейнеров.
Theme Switching: смена темы «на лету»
Вы легко можете организовать переключение тем (light/dark) с Tailwind.
- Включите поддержку dark mode в конфиге:
module.exports = {
darkMode: 'class', // или 'media'
}
- Используйте классы с префиксом
dark:
:
<template>
<div class="bg-white text-black dark:bg-gray-900 dark:text-white">
Контент приложения
</div>
</template>
- Для переключения темы используйте js:
// Добавьте или уберите класс 'dark' на <html>
document.documentElement.classList.toggle('dark');
В Nuxt можно сделать composable или плагин для более осмысленного управления темами.
Tailwind+Nuxt: Atomic CSS компоненты и переиспользование
Иногда хочется вынести набор утилит Tailwind в отдельный класс, чтобы применять к нескольким элементам — используйте директиву @apply
:
/* assets/css/components.css */
.btn-primary {
@apply px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition;
}
Подключите этот файл из основного Tailwind файла (tailwind.css):
@tailwind base;
@tailwind components;
@tailwind utilities;
@import './components.css';
Теперь используйте класс btn-primary
в разметке:
<button class="btn-primary">Кнопка</button>
Такой подход облегчает сопровождение стилей и позволяет использовать компромисс между атомарными утилитами и классическим БЭМ-подходом.
Tailwind CSS IntelliSense и Dev Experience
Для более удобной работы советую поставить расширение Tailwind CSS IntelliSense в VSCode — оно подсвечивает классы, предлагает автодополнение и позволяет быстрее находить ошибки в написании классов.
Заключение
Интеграция Tailwind CSS в Nuxt — это простой способ ускорить разработку красивых и отзывчивых интерфейсов. Вы можете настраивать стили проекта быстро и гибко, создавать собственные темы и компоненты, использовать любые плюсы атомарного CSS и получать современный результат с минимальной настройкой. Tailwind и Nuxt отлично сочетаются, а благодаря готовым модулям интеграция проста и стабильна даже для новичков. Используя приведенные техники и советы, вы добьетесь лучшего качества кода и удобной поддержки стилистики в проекте.
Tailwind CSS — это лишь один из способов стилизации Nuxt-приложений. Чтобы создавать уникальные и запоминающиеся интерфейсы, необходимо также освоить другие техники стилизации, такие как CSS-in-JS, препроцессоры CSS и создание собственных компонентов стилей. На курсе Nuxt - fullstack Vue фреймворк вы получите комплексные знания и практический опыт, необходимые для создания профессиональных веб-приложений на Nuxt с использованием различных техник стилизации. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Nuxt прямо сегодня.
Частозадаваемые технические вопросы по интеграции Tailwind CSS в Nuxt
Как добавить поддержку JIT (Just-In-Time) режима в конфигурации Tailwind + Nuxt?
В последних версиях Tailwind JIT активирован по умолчанию. Если нужно принудительно его включить, в tailwind.config.js добавьте:
module.exports = {
mode: 'jit',
// остальная конфигурация...
}
Но лучше использовать стандартные настройки модуля Nuxt — он сам активирует необходимые режимы.
Почему кастомные классы не работают после сборки проекта?
Если вы используете динамические или редко встречающиеся классы, убедитесь, что они явно указаны в safelist массива в файле tailwind.config.js
. Это не даст Tailwind удалить их во время purge-преобразований.
Как изменить базовый размер контейнера (container) в Tailwind для адаптивности?
В файле tailwind.config.js добавьте:
module.exports = {
theme: {
container: {
center: true,
padding: '2rem',
screens: {
sm: '100%',
md: '728px',
lg: '984px',
xl: '1240px',
},
},
},
};
Это обновит поведение класса container
и выставит нужные максимальные ширины.
Можно ли переопределять Tailwind классы через SCSS/LESS?
Да, классы можно расширять или даже переопределять в других CSS/SCSS-файлах, главное — чтобы import происходил после Tailwind. Но рекомендуется использовать @apply и кастомизацию через tailwind.config.js — это чище и устойчевее.
Как подключить Tailwind, если проект Nuxt установлен через create-nuxt-app с другим CSS-фреймворком?
Удалите из nuxt.config.js старый фреймворк (например, Bootstrap или Vuetify), а затем выполните стандартную установку и настройку Tailwind CSS (см. выше). Если были глобальные CSS-файлы, проверьте, что не возникает конфликтов стилей; если стили мешают, удалите их или настройте порядок подключения через поле css
в конфиге.
Постройте личный план изучения Nuxt до уровня Middle — бесплатно!
Nuxt — часть карты развития Frontend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Бесплатные лекции
Все гайды по Nuxt
Лучшие курсы по теме

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