close

shadcn/ui

shadcn/ui 是一组基于 Radix UI / Base UI 和 Tailwind CSS 构建的可复用组件集合。本指南介绍如何在 Rspress 文档站点中使用 shadcn/ui 组件。

在开始之前,请确保已经在项目中配置好 Tailwind CSS

配置路径别名

tsconfig.jsoncompilerOptions 中添加 paths,以便正确解析 shadcn/ui 组件:

tsconfig.json
{
  "compilerOptions": {
    "paths": {
      "@/*": ["./src/*"]
    }
  },
  "include": ["doc", "src", "rspress.config.ts"]
}

创建 components.json 和工具函数

由于 shadcn init 无法自动识别 Rspress 框架,需要参考 手动安装 来创建配置文件。

在项目根目录创建 components.json 文件,配置 shadcn/ui CLI:

components.json
{
  "$schema": "https://ui.shadcn.com/schema.json",
  "style": "new-york",
  "tailwind": {
    "config": "",
    "css": "tailwind.css",
    "baseColor": "neutral",
    "cssVariables": true,
    "prefix": ""
  },
  "rsc": false,
  "tsx": true,
  "aliases": {
    "utils": "@/lib/utils",
    "components": "@/components",
    "ui": "@/components/ui",
    "lib": "@/lib",
    "hooks": "@/hooks"
  }
}
Tip
  • 省略了 tailwind.config,因为 Tailwind CSS v4 不再需要配置文件。
  • rsc 设置为 false,因为 Rspress 不使用 React Server Components。

然后安装依赖并创建工具函数:

npm
yarn
pnpm
bun
deno
npm install clsx tailwind-merge class-variance-authority
src/lib/utils.ts
import { type ClassValue, clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs));
}

添加组件

使用 shadcn CLI 添加所需组件,例如 Button:

npm
yarn
pnpm
bun
deno
npx shadcn@latest add button

在 MDX 中使用

在 MDX 文件中导入并使用组件:

doc/index.mdx
import { Button } from '@/components/ui/button';

# 我的页面

<Button>点击我</Button>
<Button variant="outline">边框按钮</Button>
Tip

shadcn/ui 不是传统的 npm 包,而是一组可复制粘贴的组件集合,你可以完全掌控组件代码并按需自定义。