可定制、可扩展的精美设计组件库,开源代码,助你构建自己的设计系统。

所在地:
美国
语言:
en
收录时间:
2026-08-27
Shadcn UIShadcn UI

定位与核心理念

shadcn/ui 并非传统意义上的 npm 组件包,而是一套以“复制即拥有”为分发模式的设计组件集合。它的核心价值在于:代码直接落入你的项目仓库,而非作为黑盒依赖存在。这意味着你可以完全掌控组件实现,按需修改,不受库版本升级的约束。

该项目的目标用户是希望快速搭建高质量界面、同时保留完全定制能力的开发者与团队。它建立在 Tailwind CSSRadix UI 之上,前者负责样式体系,后者提供无障碍与交互逻辑的底层支撑。

核心特性

1. 代码归属权

通过 CLI 命令(如 npx shadcn@latest add button)将组件源码直接生成到项目指定目录。生成后的代码与手写代码无异,可任意编辑、删除或重构。这一模式从根本上解决了传统组件库“样式覆盖靠 CSS 穿透、行为修改靠 props 堆叠”的痛点。

2. 设计系统友好

组件样式基于 CSS 变量与 Tailwind 的 design token 体系构建。项目内置了一套经过推敲的默认主题(颜色、圆角、阴影、间距),但所有变量均可通过修改 globals.css 中的 :root.dark 选择器进行全局替换。适合需要建立统一品牌视觉的团队。

3. 无障碍与交互基础

交互组件(Dialog、Dropdown、Tabs、Tooltip 等)基于 Radix UI 原语构建,继承了键盘导航、焦点管理、ARIA 属性等无障碍能力。这减少了开发者自行处理复杂交互边界的成本。

4. 与框架深度集成

当前版本主要面向 Next.js 与 Vite 项目,支持 React Server Components。对于使用 TypeScript 的项目,生成的组件自带完整类型定义。

组件覆盖范围

以下为主要组件分类及代表性组件:

分类 代表性组件
表单 Input、Select、Checkbox、Radio Group、Switch、Slider、Combobox
数据展示 Table、Card、Badge、Avatar、Skeleton、Calendar
反馈 Dialog、Alert、Toast(基于 Sonner)、Tooltip、Progress
导航 Tabs、Breadcrumb、Pagination、Sidebar、Navigation Menu
布局 Accordion、Collapsible、Separator、Resizable
高级组件 Data Table、Chart(基于 Recharts)、Command(命令面板)

使用门槛与前置条件

  • Tailwind CSS:必须启用,且需要配置 CSS 变量映射(项目文档提供完整配置片段)
  • 路径别名:需在 tsconfig.jsonjsconfig.json 中配置 @/ 别名
  • 框架要求:支持 React 18+,Vue 版本目前处于早期支持阶段
  • Node.js:建议 18+ 版本

适用场景与局限

适合:需要长期维护的产品界面、追求像素级设计控制的前端团队、希望学习高质量组件实现方式的开发者。

需注意:组件并非“开箱即用”的完整产品级方案——复杂场景如富文本编辑、日期范围选择需要额外集成第三方库。此外,由于代码复制后不再自动同步上游更新,团队需自行管理组件演进。

快速开始

# 初始化(在已有 Tailwind 项目中)
npx shadcn@latest init

# 添加组件
npx shadcn@latest add button card dialog

# 添加全部组件
npx shadcn@latest add all

初始化命令会检测项目环境并自动完成样式变量注入、工具函数生成(cn)与基础配置。此后每个组件以独立文件形式存在于 components/ui/ 目录下,依赖关系由生成器自动解析。

相关导航