Tailwind CSS module for Nuxt applications with zero configuration, CSS nesting support, and configuration viewer
npx @tessl/cli install tessl/npm-nuxtjs--tailwindcss@6.14.0The @nuxtjs/tailwindcss module provides seamless integration of Tailwind CSS into Nuxt applications with zero configuration required. It includes CSS Nesting support via postcss-nesting, a configuration viewer for discovering Tailwind config and colors, the ability to reference Tailwind config directly in applications, and extensibility through Nuxt module hooks. The module supports both Nuxt 2 and Nuxt 3, offers automatic setup with intelligent defaults, and enables developers to quickly prototype and build production-ready applications using Tailwind's utility-first CSS framework within the Nuxt ecosystem.
npm install --save-dev @nuxtjs/tailwindcss// Main module - used in nuxt.config
export default defineNuxtModule<ModuleOptions>;
export type { ModuleOptions, ModuleHooks };
// Configuration utilities
import { defineConfig } from '@nuxtjs/tailwindcss/config';
// Configuration merging
import configMerger from '@nuxtjs/tailwindcss/merger';
// Configuration context (internal use)
import '@nuxtjs/tailwindcss/config-ctx';
// Runtime utilities (when editorSupport is enabled)
import { autocompleteUtil as tw } from '#imports';For CommonJS:
// Main module
const tailwindModule = require('@nuxtjs/tailwindcss');
// Configuration utilities
const { defineConfig } = require('@nuxtjs/tailwindcss/config');
// Configuration merging
const configMerger = require('@nuxtjs/tailwindcss/merger');Add the module to your Nuxt configuration:
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@nuxtjs/tailwindcss'],
tailwindcss: {
// Module options
cssPath: '~/assets/css/tailwind.css',
configPath: 'tailwind.config',
exposeConfig: false,
viewer: true,
}
});Create a Tailwind configuration file:
// tailwind.config.ts
import { defineConfig } from '@nuxtjs/tailwindcss/config';
export default defineConfig({
content: ['./pages/**/*.vue', './components/**/*.vue'],
theme: {
extend: {
colors: {
primary: '#3b82f6'
}
}
}
});The Nuxt Tailwind CSS module is built around several key components:
Core module configuration for integrating Tailwind CSS into Nuxt applications. Controls CSS file handling, configuration loading, and feature enablement.
interface ModuleOptions {
configPath: string | string[];
cssPath: string | false | [string, { injectPosition: InjectPosition }];
config: Partial<TWConfig> | string | Array<Partial<TWConfig> | string>;
viewer: boolean | ViewerConfig;
exposeConfig: boolean | ExposeConfig;
quiet: boolean;
editorSupport: boolean | EditorSupportConfig;
experimental?: Partial<ExperimentalOptions>;
disableHMR?: boolean;
}
type InjectPosition = 'first' | 'last' | number | { after: string };Utilities for creating and managing Tailwind CSS configurations with Nuxt-specific enhancements and context management.
function defineConfig(config: Partial<TWConfig>): Partial<TWConfig>;
function configMerger(
base: Partial<TWConfig> | null | undefined,
...defaults: Array<Partial<TWConfig> | null | undefined>
): Partial<TWConfig>;Development-time features including configuration viewer, editor support, and Hot Module Reload for enhanced developer experience.
interface ViewerConfig {
endpoint: `/${string}`;
exportViewer: boolean;
}
interface EditorSupportConfig {
autocompleteUtil: boolean | { as: string };
generateConfig: boolean;
}
function autocompleteUtil<T extends TemplateStringsArray | string>(
tailwindClasses: T
): T;Optional runtime access to resolved Tailwind configuration for dynamic styling and configuration introspection.
interface ExposeConfig {
alias: string;
level: number;
write?: boolean;
}Extensibility hooks for other Nuxt modules to modify Tailwind configuration and behavior during the build process.
interface ModuleHooks {
'tailwindcss:config': (tailwindConfig: Partial<TWConfig>) => void;
'tailwindcss:loadConfig': (
tailwindConfig: Partial<TWConfig> | undefined,
configPath: string,
index: number,
configPaths: string[]
) => void;
'tailwindcss:resolvedConfig': (
tailwindConfig: ReturnType<typeof import('tailwindcss/resolveConfig')>,
oldTailwindConfig: TWConfig | undefined
) => void;
}type TWConfig = import('tailwindcss').Config;
type Arrayable<T> = T | T[];
type BoolObj<T extends Record<string, any>> = boolean | Partial<T>;
interface ExperimentalOptions {
strictScanContentPaths: boolean;
tailwindcss4: boolean;
}