mcpField
U
UnoCSS

UnoCSS

github.com/laurigatesデザイン・UI5935 回インストール1 日前に更新
リポジトリ

UnoCSS について

UnoCSSは、ユーティリティファーストのスタイルを使う開発者向けのオンデマンド型アトミックCSSエンジンです。このスキルでは、フレームワーク連携、プリセット、カスタムルール、CLIの使い方を扱い、ソースで使われたユーティリティからCSSを生成します。

主な機能

  1. 01オンデマンドのアトミックCSS生成
  2. 02プリセットとカスタムルール
  3. 03Viteおよびフレームワーク連携
  4. 04CLI生成とウォッチモード
  5. 05組み込み開発インスペクター

活用シーン

  1. 01プロジェクトにユーティリティファーストCSSを設定
  2. 02プリセット、ショートカット、バリアントを構成
  3. 03指定したソースファイルからCSSを生成
  4. 04開発中に生成されたユーティリティを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill unocss

インストール後、Claude Code で/unocssを入力して読み込まれたか確認します。

詳細

UnoCSS

UnoCSS は、オンデマンドで即座に動作するアトミック CSS エンジンです。実際に使用するユーティリティクラスの CSS だけを生成します。パースも AST もスキャンも必要ありません。Tailwind CSS JIT より 5 倍高速で、minify と Brotli 適用後のサイズは約 6kb、依存関係はゼロです。

このスキルを使う場面

このスキルを使う場面…別のものを使う場面…
ユーティリティファースト CSS をセットアップするときCSS をトランスパイル/圧縮するとき(Lightning CSS を使用)
UnoCSS のプリセットとルールを設定するときCSS ルールをリントするとき(Stylelint を使用)
Vite/Nuxt/Astro と統合するときTailwind 固有のプラグインエコシステムが必要なとき
クラス名からアトミック CSS を生成するとき従来の CSS アーキテクチャ(BEM など)を使うとき
プリセット経由で純粋な CSS アイコンを使うときCSS-in-JS のランタイムが必要なとき(styled-components などを使用)
Tailwind CSS をより高速な代替手段に置き換えるとき

主な機能

  • 即時生成:パースや AST は不要で、正規表現によるクラス抽出を直接行います
  • プリセット主導:すべてのユーティリティはプリセットから提供され、自由にカスタマイズできます
  • フレームワーク非依存:Vite、Webpack、PostCSS、Nuxt、Astro、Svelte、CLI に対応しています
  • 拡張可能:カスタムルール、バリアント、ショートカット、エクストラクター、トランスフォーマーに対応しています
  • インスペクター:生成されたユーティリティをデバッグするための開発ツールを内蔵しています

インストール

# Vite project (most common)
npm add -D unocss

# Bun
bun add -d unocss

# Standalone CLI
npm add -D @unocss/cli

Vite との統合

基本設定
// vite.config.ts
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [UnoCSS()]
})
// main.ts - import the virtual stylesheet
import 'virtual:uno.css'
設定ファイル
// uno.config.ts
import { defineConfig, presetWind3 } from 'unocss'

export default defineConfig({
  presets: [presetWind3()]
})
Lightning CSS との併用(推奨の組み合わせ)
// vite.config.ts
import UnoCSS from 'unocss/vite'
import browserslist from 'browserslist'
import { browserslistToTargets } from 'lightningcss'

export default defineConfig({
  plugins: [UnoCSS()],
  css: {
    transformer: 'lightningcss',
    lightningcss: {
      targets: browserslistToTargets(browserslist('>= 0.25%'))
    }
  },
  build: {
    cssMinify: 'lightningcss'
  }
})
プラグインのモード
モード用途セットアップ
Global(デフォルト)標準的なアプリエントリーファイルで import 'virtual:uno.css'
Vue-scopedVue コンポーネントの分離<style scoped> ブロックに挿入します
Shadow DOMWeb Componentsコンポーネントのスタイルに @unocss-placeholder を追加します
Per-module(実験的)モジュールスコープの CSSモジュールごとに CSS シートを作成します
Dist-chunk(実験的)マルチページアプリコードチャンクごとに CSS シートを作成します
フレームワーク別のプラグイン順序
フレームワークUnoCSS プラグインの位置
React(Babel)@vitejs/plugin-react の前
Svelte/SvelteKitSvelte プラグインの前
Vue任意の位置(デフォルトで動作します)
Solid/Preact順序についてはドキュメントを確認してください

CLI の使用方法

# Generate CSS from source files
unocss "src/**/*.{html,tsx,vue}" -o dist/uno.css

# Multiple glob patterns
unocss "src/**/*.tsx" "pages/**/*.vue" -o dist/uno.css

# Minified output
unocss "src/**/*.tsx" -o dist/uno.css --minify

# Output to stdout (pipe-friendly)
unocss "src/**/*.tsx" --stdout

# Watch mode for development
unocss "src/**/*.tsx" -o dist/uno.css --watch

# With specific config file
unocss "src/**/*.tsx" -o dist/uno.css --config uno.config.ts

# Include preflight styles
unocss "src/**/*.tsx" -o dist/uno.css --preflights

# Use specific preset without config
unocss "src/**/*.tsx" -o dist/uno.css --preset wind4

設定

プリセット
// uno.config.ts
import {
  defineConfig,
  presetWind3,        // Tailwind CSS v3 compatible utilities
  presetIcons,        // Pure CSS icons from Iconify
  presetAttributify,  // Attributify mode (utilities as HTML attributes)
  presetTypography,   // Typography prose classes
  presetWebFonts,     // Web font loading
  presetMini,         // Minimal preset (subset of wind)
} from 'unocss'

export default defineConfig({
  presets: [
    presetWind3(),
    presetIcons({
      scale: 1.2,
      cdn: 'https://esm.sh/'
    }),
    presetAttributify(),
    presetTypography(),
    presetWebFonts({
      provider: 'google',
      fonts: { sans: 'Inter', mono: 'Fira Code' }
    })
  ]
})
Wind3 と Wind4 の比較
プリセット互換性備考
presetWind3()Tailwind CSS v3安定しており、広く使われています
presetWind4()Tailwind CSS v4新しく、CSS ファーストの設定に対応しています
カスタムルール
// uno.config.ts
export default defineConfig({
  rules: [
    // Static rule
    ['custom-padding', { padding: '1rem' }],
    // Dynamic rule
    [/^m-(\d+)$/, ([, d]) => ({ margin: `${Number(d) / 4}rem` })],
  ]
})
ショートカット
// uno.config.ts
export default defineConfig({
  shortcuts: {
    'btn': 'py-2 px-4 font-semibold rounded-lg shadow-md',
    'btn-primary': 'btn bg-blue-500 text-white hover:bg-blue-700',
    'card': 'p-4 rounded-lg shadow bg-white dark:bg-gray-800',
  }
})
テーマ
// uno.config.ts
export default defineConfig({
  theme: {
    colors: {
      primary: '#3b82f6',
      secondary: '#64748b',
    },
    breakpoints: {
      sm: '640px',
      md: '768px',
      lg: '1024px',
    }
  }
})
セーフリスト
// uno.config.ts — pre-generate classes not found in source scanning
export default defineConfig({
  safelist: [
    'bg-red-500',
    'text-white',
    ...Array.from({ length: 5 }, (_, i) => `p-${i + 1}`)
  ]
})
レイヤー
// uno.config.ts — control CSS specificity ordering
export default defineConfig({
  layers: {
    components: -1,  // Before utilities
    default: 1,      // Utilities
    utilities: 2,    // Higher specificity utilities
  }
})

アイコンプリセット

任意の Iconify コレクションから純粋な CSS アイコンを利用できます。

# Install icon collections
npm add -D @iconify-json/mdi @iconify-json/lucide
// uno.config.ts
import { presetIcons } from 'unocss'

export default defineConfig({
  presets: [
    presetIcons({
      extraProperties: {
        'display': 'inline-block',
        'vertical-align': 'middle',
      }
    })
  ]
})

<div class="i-mdi-home text-2xl" />
<div class="i-lucide-settings w-6 h-6" />

インスペクター

開発中は、内蔵のインスペクターで生成された CSS を確認できます。

// main.ts
import 'virtual:uno.css'

開発サーバーで /__unocss を開くと、次の情報を含むインスペクターを確認できます。

  • 生成された CSS ルール
  • ファイルごとに一致したクラス
  • 設定の概要

DevTools との統合

// main.ts — enable class editing in browser DevTools
import 'virtual:uno.css'
import 'virtual:unocss-devtools'

バリアントグループ

よく使うプレフィックスを短く記述できます。


<div class="hover:bg-blue-500 hover:text-white hover:font-bold" />


<div class="hover:(bg-blue-500 text-white font-bold)" />

トランスフォーマーを使って有効にします。

import { transformerVariantGroup } from 'unocss'

export default defineConfig({
  transformers: [transformerVariantGroup()]
})

エージェント向けの最適化

コンテキストコマンド
すばやく生成unocss "src/**/*.tsx" -o uno.css --minify
標準出力(パイプ)unocss "src/**/*.tsx" --stdout
監視モードunocss "src/**/*.tsx" -o uno.css -w
設定を確認プリセットとルールを確認するため、uno.config.ts を読み込みます
インポートを確認エントリーファイルで virtual:uno.css を grep します
ユーティリティを調査開発サーバーで /__unocss を開きます

クイックリファレンス

フラグエイリアス説明
--out-file <file>-o出力ファイル名(デフォルト:uno.css)
--stdoutCSS を標準出力に書き込みます
--watch-wファイルの変更を監視します
--minify-m生成された CSS を圧縮します
--config <file>-c設定ファイルのパス
--preflightspreflight/reset スタイルを含めます
--preset <name>wind3 または wind4 プリセットを使用します
--debugデバッグモードを有効にします

References

コメント