--- name: unocss-nuxt-integration description: UnoCSS module for Nuxt applications --- # UnoCSS Nuxt Integration The official Nuxt module for UnoCSS. ## Installation ```bash pnpm add -D unocss @unocss/nuxt ``` Add to Nuxt config: ```ts // nuxt.config.ts export default defineNuxtConfig({ modules: [ '@unocss/nuxt', ], }) ``` Create config file: ```ts // uno.config.ts import { defineConfig, presetWind3 } from 'unocss' export default defineConfig({ presets: [ presetWind3(), ], }) ``` **Note:** The `uno.css` entry is automatically injected by the module. ## Support Status | Build Tool | Nuxt 2 | Nuxt Bridge | Nuxt 3 | |------------|--------|-------------|--------| | Webpack Dev | ✅ | ✅ | 🚧 | | Webpack Build | ✅ | ✅ | ✅ | | Vite Dev | - | ✅ | ✅ | | Vite Build | - | ✅ | ✅ | ## Configuration ### Using uno.config.ts (Recommended) Use a dedicated config file for best IDE support: ```ts // uno.config.ts import { defineConfig, presetWind3, presetIcons } from 'unocss' export default defineConfig({ presets: [ presetWind3(), presetIcons(), ], shortcuts: { 'btn': 'py-2 px-4 font-semibold rounded-lg', }, }) ``` ### Nuxt Layers Support Enable automatic config merging from Nuxt layers: ```ts // nuxt.config.ts export default defineNuxtConfig({ unocss: { nuxtLayers: true, }, }) ``` Then in your root config: ```ts // uno.config.ts import config from './.nuxt/uno.config.mjs' export default config ``` Or extend the merged config: ```ts // uno.config.ts import { mergeConfigs } from '@unocss/core' import config from './.nuxt/uno.config.mjs' export default mergeConfigs([config, { // Your overrides shortcuts: { 'custom': 'text-red-500', }, }]) ``` ## Common Setup Example ```ts // nuxt.config.ts export default defineNuxtConfig({ modules: [ '@unocss/nuxt', ], }) ``` ```ts // uno.config.ts import { defineConfig, presetAttributify, presetIcons, presetTypography, presetWebFonts, presetWind3, transformerDirectives, transformerVariantGroup, } from 'unocss' export default defineConfig({ presets: [ presetWind3(), presetAttributify(), presetIcons({ scale: 1.2, }), presetTypography(), presetWebFonts({ fonts: { sans: 'DM Sans', mono: 'DM Mono', }, }), ], transformers: [ transformerDirectives(), transformerVariantGroup(), ], shortcuts: [ ['btn', 'px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'], ], }) ``` ## Usage in Components ```vue ``` With attributify mode: ```vue ``` ## Inspector In development, visit `/_nuxt/__unocss` to access the UnoCSS inspector. ## Key Differences from Vite - No need to import `virtual:uno.css` - automatically injected - Config file discovery works the same - All Vite plugin features available - Nuxt layers config merging available