--- 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