shadcn/ui 02 導入と CLI

更新日:

導入方法は3通り

1. shadcn/create(見た目を選んでから作る)

https://ui.shadcn.com/create でスタイル・色・フォント・アイコン・角丸を画面で選ぶ → 生成されたコマンドをコピー:

npx shadcn@latest init --preset [CODE] --template next

2. CLI で新規プロジェクト

npx shadcn@latest init -t next          # Next.js
npx shadcn@latest init -t vite          # Vite + React
npx shadcn@latest init -t start         # TanStack Start
npx shadcn@latest init -t next --monorepo

テンプレート: next vite start react-router laravel astro

3. 既存プロジェクトに追加

前提: Tailwind CSS 導入済み、tsconfig.json に @/* エイリアス

npx create-next-app@latest               # 既定設定なら Tailwind・@/* 済み
npx shadcn@latest init                   # 設定・依存・cn()・CSS 変数を追加
npx shadcn@latest add button
import { Button } from '@/components/ui/button'
export default function Home() {
  return <Button>Click me</Button>
}
  • Vite の場合は @tailwindcss/vite と vite.config.ts / tsconfig.json のエイリアス設定が必要(公式手順あり)

init の主なオプション

オプション意味
-t, --templatenext / vite / start / react-router / laravel / astro
-b, --base土台ライブラリ: base(Base UI) / radix / aria
-p, --presetプリセット(create で作ったもの)
-d, --defaults既定(--template=next --preset=nova)
--monorepoモノレポ構成
--rtl右から左の言語対応
--no-css-variablesCSS 変数を使わない(非推奨)
create は init の別名。

CLI コマンド一覧

コマンド用途
init / create初期化・新規作成
add [部品...]部品を追加(add button card dialog、add @acme/hero など他レジストリも)
view [部品...]追加せずにコードを見る
search / listレジストリ内を検索(search @shadcn -q "button")
apply [preset]プリセットを適用(--only theme でテーマだけ)
preset decode/info/url/openプリセットの中身確認
diff手元の部品と最新版の差分(スキルの説明より)
docsドキュメント参照
infoプロジェクト設定の表示(--json で AI 向け)
build自作レジストリをビルド
migrate移行作業(アイコンライブラリ変更など)
eject設定の切り離し
mcp init --client claudeMCP サーバー設定(shadcn-ui_06_レジストリ・MCP・AI開発・実務の注意)
  • モノレポでは -c apps/web で対象ワークスペースを指定

components.json(設定ファイル)

{
  "style": "base-nova",
  "rsc": true,                        // React Server Components 対応('use client' を付けるか)
  "tsx": true,
  "tailwind": {
    "config": "",                     // Tailwind v4 は空
    "css": "app/globals.css",
    "baseColor": "neutral",
    "cssVariables": true
  },
  "aliases": {
    "components": "@/components",
    "ui": "@/components/ui",
    "utils": "@/lib/utils",
    "lib": "@/lib",
    "hooks": "@/hooks"
  },
  "registries": { "@acme": "https://acme.com/r/{name}.json" }
}
  • init 時に決めた style・baseColor は後から変えにくい → 最初に create で見た目を決めておくと楽

関連