SuperAPI AI 工具集

shadcn-vue

前端与建站

查看项目

更新于 10-15 15:33

技能介绍

用途

shadcn-vue 面向 Vue 3+ 或 Nuxt 3+ 项目,提供一套可访问、可定制的 UI 组件,底层使用 Reka UI v2(原 Radix Vue)与 Tailwind CSS。它适合需要构建管理后台、内容管理系统等界面的 Vue/Nuxt 应用。

主要能力

  • 组件库:提供 50 多个组件,涵盖导航与布局(Accordion、Dialog、Dropdown Menu、Sidebar、Tabs、Toast、Tooltip 等)、表单(Auto Form、Button、Calendar、Checkbox、Combobox、Date Picker、Form、Input、Select、Slider、Switch、Textarea 等)、数据展示(Data Table、Skeleton、Stepper、Table、Tag Input 等)以及高级组件(Charts(Unovis)、Color Picker、Editable、File Upload、Sortable)。
  • Auto Form:基于 Zod schema 生成表单,支持 string、number、boolean、date、enum、array、object 等字段类型。
  • Data Table:基于 TanStack Table,支持排序、过滤、分页、行选择、列可见性、可展开行。
  • 暗色模式:通过 @vueuse/core 的 useColorMode 与 ThemeProvider 实现主题切换。
  • CLI:提供 init、add、diff 命令,支持单组件、多组件或全部组件添加,并支持 monorepo 中通过 -c 指定目录。

使用方式

Vue(Vite)项目:

  1. 初始化:bunx shadcn-vue@latest init 或 npx shadcn-vue@latest init。初始化时需选择 Style(New York 或 Default,之后不可更改)、Base color(推荐 Slate)、CSS variables(暗色模式必需)。
  2. 配置 TypeScript 路径别名,在 tsconfig.json 中设置 baseUrl 与 paths(如 @/* 指向 ./src/*)。
  3. 配置 Vite,引入 vue 与 tailwindcss 插件,并设置 @ 别名。
  4. 添加组件:bunx shadcn-vue@latest add button。

Nuxt 项目:

  1. 创建项目并安装 @nuxtjs/tailwindcss。
  2. 在 nuxt.config.ts 中配置 modules。
  3. 运行 bunx shadcn-vue@latest init(或 npx / pnpm dlx)。

Auto Form 安装:bunx shadcn-vue@latest add auto-form,并安装 zod。

Data Table 安装:bunx shadcn-vue@latest add data-table,并安装 @tanstack/vue-table。

暗色模式安装:bun add @vueuse/core,然后创建 ThemeProvider 组件并使用 useColorMode。

CLI 命令:

  • init:初始化,支持 -c 指定目录。
  • add:添加组件,支持多个组件名或 --all。
  • diff:检查组件更新。

适用场景

适用于 Vue/Nuxt 应用、管理后台、内容管理系统等需要可访问、可定制 UI 组件的场景。

限制与注意事项

  • 初始化后不能更改 Style,否则需要重新安装。
  • 不要混用 Radix Vue 与 Reka UI v2,两者 API 不兼容。
  • 必须配置 TypeScript 路径别名,否则组件导入失败。
  • 必须使用 Tailwind CSS,否则组件样式无法正确渲染。
  • 需使用 CSS variables 以支持暗色模式。
  • components.json 应纳入版本控制。
  • monorepo 中需使用 -c 指定工作区目录。
  • 安装依赖时建议遵循供应链安全实践:阻止 post-install 脚本、设置冷却期、安装前审计。

配置与工具

components.json 用于配置组件路径(@/components/ui)、工具位置(@/lib/utils)、Tailwind 配置路径与 TypeScript 路径。@/lib/utils.ts 提供 cn() 辅助函数,使用 clsx + tailwind-merge 合并 Tailwind 类名,由 init 自动生成。

资源

官方文档:https://shadcn-vue.com;Reka UI 文档:https://reka-ui.com;GitHub:https://github.com/radix-vue/shadcn-vue。组件示例:https://shadcn-vue.com/examples。