or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

tessl/npm-unocss--nuxt

Nuxt module for UnoCSS that integrates the instant on-demand Atomic CSS engine into Nuxt.js applications

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@unocss/nuxt@66.5.x

To install, run

npx @tessl/cli install tessl/npm-unocss--nuxt@66.5.0

index.mddocs/

@unocss/nuxt

@unocss/nuxt is a Nuxt module that integrates UnoCSS, the instant on-demand Atomic CSS engine, into Nuxt.js applications. It provides seamless integration with both Vite and Webpack build systems, enabling developers to use UnoCSS's powerful utility-first CSS framework within Nuxt projects with zero runtime overhead and instant compilation.

Package Information

  • Package Name: @unocss/nuxt
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install @unocss/nuxt

Core Imports

import UnoCSS from "@unocss/nuxt";

For accessing configuration types:

import type { UnocssNuxtOptions } from "@unocss/nuxt";

For TypeScript projects, both the module and types are available:

import UnoCSS, { type UnocssNuxtOptions } from "@unocss/nuxt";

Basic Usage

Add the module to your nuxt.config.ts:

export default defineNuxtConfig({
  modules: [
    '@unocss/nuxt'
  ],
  unocss: {
    // UnoCSS options
    preflight: true,
    icons: true,
  }
});

Architecture

@unocss/nuxt is built around several key components:

  • Nuxt Module: Main integration point that configures UnoCSS within the Nuxt ecosystem
  • Build Integration: Automatic plugin registration for both Vite and Webpack build systems
  • Configuration System: Unified options interface extending UnoCSS core configuration
  • Preset Management: Automatic preset resolution and conflict handling
  • Runtime Components: Vue components like <UnoIcon> for enhanced functionality
  • Development Tools: Nuxt DevTools integration with UnoCSS panel and hot module replacement support

Capabilities

Module Configuration

Core Nuxt module that registers UnoCSS integration with comprehensive configuration options.

/**
 * Default export - Nuxt module for UnoCSS integration
 */
declare const UnoCSS: NuxtModule<UnocssNuxtOptions>;
export default UnoCSS;

/**
 * Configuration options interface
 */
export interface UnocssNuxtOptions extends UserConfig {
  /** CSS Generation mode (Vite only, default: 'global') */
  mode?: 'global' | 'per-module' | 'vue-scoped' | 'dist-chunk' | 'shadow-dom';
  
  /** Automatically inject uno.css entry (default: true) */
  autoImport?: boolean;
  
  /** Inject @unocss/reset/tailwind.css entry (default: false) */
  preflight?: boolean;
  
  /** Disable Nuxt's inline styles for UnoCSS compatibility (default: true) */
  disableNuxtInlineStyle?: boolean;
  
  /** Automatically merge UnoCSS configs from Nuxt layers (default: false) */
  nuxtLayers?: boolean;
  
  /** Path to UnoCSS config file (default: ['uno.config', 'unocss.config']) */
  configFile?: string | string[];
  
  /** @deprecated Position control for uno.css injection - temporarily removed due to incompatibility with Nuxt 3.9 */
  injectPosition?: 'first' | 'last' | number | { after?: string };
  
  /** Install UnoCSS components like <UnoIcon> (default: true) */
  components?: boolean;
  
  /** Enable attributify mode and options (default: false) */
  attributify?: boolean | AttributifyOptions;
  
  /** Enable tagify mode and options (default: false) */
  tagify?: boolean | TagifyOptions;
  
  /** Enable icons preset and options (default: false) */
  icons?: boolean | IconsOptions;
  
  /** Enable web fonts preset and options (default: false) */
  webFonts?: boolean | WebFontsOptions;
  
  /** Enable typography preset and options (default: false) */
  typography?: boolean | TypographyOptions;
  
  /** Enable wind3 preset (default: true) */
  wind3?: boolean | PresetWind3Options;
  
  /** Enable wind4 preset (default: false) */
  wind4?: boolean | PresetWind4Options;
}

Configuration Extensions and Hooks

Extends Nuxt's configuration schema to include UnoCSS options and provides integration hooks.

/**
 * Nuxt configuration schema extensions and hooks
 */
declare module '@nuxt/schema' {
  interface NuxtConfig {
    unocss?: UnocssNuxtOptions;
  }
  
  interface NuxtOptions {
    unocss?: UnocssNuxtOptions;
  }
  
  interface NuxtHooks {
    /**
     * Hook called when UnoCSS config loading is completed
     */
    'unocss:config': (config: UserConfig) => void;
  }
}

Runtime Components

Vue components provided by the module for enhanced UnoCSS integration.

/**
 * UnoIcon Vue component - basic empty div element
 * Available when components option is enabled (default: true)
 * Note: This is a placeholder component with no props or functionality
 */
declare const UnoIcon: DefineComponent;

Types

Core Configuration Interface

interface UnocssNuxtOptions extends UserConfig {
  mode?: 'global' | 'per-module' | 'vue-scoped' | 'dist-chunk' | 'shadow-dom';
  autoImport?: boolean;
  preflight?: boolean;
  disableNuxtInlineStyle?: boolean;
  nuxtLayers?: boolean;
  configFile?: string | string[];
  injectPosition?: 'first' | 'last' | number | { after?: string };
  components?: boolean;
  attributify?: boolean | AttributifyOptions;
  tagify?: boolean | TagifyOptions;
  icons?: boolean | IconsOptions;
  webFonts?: boolean | WebFontsOptions;
  typography?: boolean | TypographyOptions;
  wind3?: boolean | PresetWind3Options;
  wind4?: boolean | PresetWind4Options;
}

Preset Option Types

/**
 * Preset configuration types (imported from respective preset packages)
 */
type AttributifyOptions = import('@unocss/preset-attributify').AttributifyOptions;
type IconsOptions = import('@unocss/preset-icons').IconsOptions;
type TagifyOptions = import('@unocss/preset-tagify').TagifyOptions;
type TypographyOptions = import('@unocss/preset-typography').TypographyOptions;
type WebFontsOptions = import('@unocss/preset-web-fonts').WebFontsOptions;
type PresetWind3Options = import('@unocss/preset-wind3').PresetWind3Options;
type PresetWind4Options = import('@unocss/preset-wind4').PresetWind4Options;

Base Configuration

/**
 * Base UnoCSS configuration (from @unocss/core)
 */
type UserConfig = import('@unocss/core').UserConfig;

Usage Examples

Basic Configuration

// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@unocss/nuxt'],
  unocss: {
    // Enable preflight (CSS reset)
    preflight: true,
    
    // Enable UnoCSS icons
    icons: true,
    
    // Enable attributify mode
    attributify: true,
    
    // Use global CSS injection mode
    mode: 'global'
  }
});

Advanced Configuration with Custom Presets

// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@unocss/nuxt'],
  unocss: {
    preflight: true,
    icons: {
      scale: 1.2,
      warn: true,
      collections: {
        carbon: () => import('@iconify-json/carbon/icons.json').then(i => i.default),
      }
    },
    webFonts: {
      provider: 'google',
      fonts: {
        sans: 'Roboto',
        mono: ['Fira Code', 'Fira Mono:400,700']
      }
    },
    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',
      'btn-green': 'text-white bg-green-500 hover:bg-green-700',
    },
    rules: [
      [/^m-(\d+)$/, ([, d]) => ({ margin: `${d}px` })],
    ]
  }
});

Using with Nuxt Layers

// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@unocss/nuxt'],
  unocss: {
    // Enable automatic config merging from layers
    nuxtLayers: true,
    
    // Specify custom config file paths
    configFile: ['uno.config.ts', 'unocss.config.ts'],
    
    // Base configuration
    preflight: true,
    wind3: true
  }
});

TypeScript Configuration

// nuxt.config.ts
import type { UnocssNuxtOptions } from '@unocss/nuxt';

const unocssConfig: UnocssNuxtOptions = {
  preflight: true,
  icons: true,
  attributify: true,
  wind3: true,
  shortcuts: {
    'custom-btn': 'bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600'
  }
};

export default defineNuxtConfig({
  modules: ['@unocss/nuxt'],
  unocss: unocssConfig
});

Accessing UnoIcon Component

<template>
  <div>
    <!-- UnoIcon component automatically available when components: true -->
    <!-- Note: UnoIcon is currently a placeholder empty div component -->
    <UnoIcon />
  </div>
</template>

Using the Configuration Hook

// plugins/unocss.client.ts
export default defineNuxtPlugin(() => {
  // Hook into UnoCSS configuration
  const nuxtApp = useNuxtApp();
  
  nuxtApp.hook('unocss:config', (config) => {
    console.log('UnoCSS configuration loaded:', config);
  });
});

Development Tools Integration

In development mode, the module automatically registers a UnoCSS panel in Nuxt DevTools, accessible at /__unocss/ for inspecting generated CSS and configuration.