Tailwind CSS module for Nuxt applications with zero configuration, CSS nesting support, and configuration viewer
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Utilities for creating and managing Tailwind CSS configurations with Nuxt-specific enhancements and context management.
Creates a Tailwind CSS configuration with Nuxt context awareness and intelligent fallbacks.
/**
* Creates a Tailwind CSS configuration with Nuxt context awareness
* @param config - Partial Tailwind configuration object
* @returns The configuration object or fallback config
*/
function defineConfig(config: Partial<TWConfig>): Partial<TWConfig>;Usage Examples:
// tailwind.config.ts
import { defineConfig } from '@nuxtjs/tailwindcss/config';
export default defineConfig({
content: [
'./components/**/*.{js,vue,ts}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
'./plugins/**/*.{js,ts}',
'./nuxt.config.{js,ts}',
'./app.vue'
],
theme: {
extend: {
colors: {
primary: {
50: '#eff6ff',
500: '#3b82f6',
900: '#1e3a8a',
}
},
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
spacing: {
'18': '4.5rem',
'88': '22rem',
}
}
},
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
]
});// tailwind.config.js (CommonJS)
const { defineConfig } = require('@nuxtjs/tailwindcss/config');
module.exports = defineConfig({
theme: {
extend: {
colors: {
brand: '#ff6b6b'
}
}
}
});Internal context management for Tailwind configuration state.
/**
* Context instance for managing Tailwind configuration state
*/
const ctx: UnctxInstance<boolean>;The context automatically handles:
Context Initialization:
// @nuxtjs/tailwindcss/config-ctx - Sets context for configuration loading
import '@nuxtjs/tailwindcss/config-ctx';This import is used internally by the module to initialize the configuration context. It should typically not be imported directly by end users, but may be needed in certain advanced configuration scenarios.
Merges multiple Tailwind CSS configuration objects with special handling for content arrays and objects.
/**
* Merges Tailwind CSS configuration objects with special content merging logic
* @param base - Base configuration object
* @param defaults - Additional configuration objects to merge
* @returns Merged configuration object
*/
function configMerger(
base: Partial<TWConfig> | null | undefined,
...defaults: Array<Partial<TWConfig> | null | undefined>
): Partial<TWConfig>;Special Merging Behavior:
The merger has intelligent logic for the content property:
files propertyfiles propertyUsage Examples:
import configMerger from '@nuxtjs/tailwindcss/merger';
// Merge configurations
const baseConfig = {
content: ['./pages/**/*.vue'],
theme: {
colors: { primary: 'blue' }
}
};
const overrides = {
content: {
files: ['./components/**/*.vue'],
extract: {
vue: (content) => content.match(/class="([^"]*)"/) || []
}
},
theme: {
colors: { secondary: 'red' }
}
};
const merged = configMerger(baseConfig, overrides);
// Result: {
// content: {
// files: ['./pages/**/*.vue', './components/**/*.vue'],
// extract: { vue: (content) => ... }
// },
// theme: {
// colors: { primary: 'blue', secondary: 'red' }
// }
// }// Function-based content merging
const config1 = {
content: (files) => [...files, './custom/**/*.vue']
};
const config2 = {
content: ['./base/**/*.vue']
};
const merged = configMerger(config1, config2);
// The function receives the array and can transform itCore types used by the configuration utilities.
type TWConfig = import('tailwindcss').Config;
type Input = Partial<TWConfig> | Record<PropertyKey, any> | null | undefined;
interface UnctxInstance<T> {
tryUse(): T | undefined;
use(): T;
set(instance: T, replace?: boolean): void;
}The configuration utilities integrate seamlessly with Nuxt's module system:
defineConfig automatically detects Nuxt environmentThe utilities handle various edge cases:
Install with Tessl CLI
npx tessl i tessl/npm-nuxtjs--tailwindcss