做前端最怕两件事:要么组件库黑盒,改不动、定制难;要么从零造轮子,样式、可访问性、暗色模式全要自己来。shadcn/ui 走了一条中间路线:它不让你 npm install 一个黑盒,而是把高质量、可访问的组件源码「复制」进你的项目,代码完全归你,想改就改、想扩就扩。它基于 Radix UI 与 Tailwind CSS,是当下 React 生态里最受欢迎的组件方案之一。

项目基本信息

信息项详情
项目名称shadcn-ui
GitHub地址https://github.com/shadcn-ui/ui
项目描述Composable, accessible components with thoughtful defaults. Build your own component library with code you can customize, extend, and make your own.
作者shadcn-ui
开源协议MIT License
开源状态公开
LanguagesTypeScript
Stars126,636
Forks12,543
支持平台Windows / macOS / Linux
最后更新2026-10-26

一、项目介绍

shadcn/ui 是一套精心设计的开源组件集合,定位是「帮你建立自己的组件库」。它不是传统意义上的 npm 依赖,而是通过 CLI 把组件代码直接放进你的代码库,你拥有全部源码与定制权。底层用 Radix UI 保证可访问性,用 Tailwind CSS 控制样式,并紧跟 React Aria、Base UI 等现代方案。你可以基于它快速搭建统一风格的 UI。

二、核心优势

  • 代码归你:组件以源码形式存在,零黑盒、易定制。
  • 高可访问性:基于 Radix/React Aria,开箱达标。
  • 样式自由:Tailwind 驱动,主题与暗色模式随手改。
  • 生态广:Next.js、Vite、Laravel 等模板齐全。

三、适用场景

  • 从零搭建风格统一的中后台或营销站点。
  • 需要高度定制又不想重造可访问性轮子。
  • 做设计系统落地与组件资产沉淀。
  • 快速原型与产品化 UI。

四、安装教程

需 Node.js 与 Tailwind CSS 环境,初始化:

npx shadcn@latest init

按提示选择样式、颜色与路径,然后把组件加进来:

npx shadcn@latest add button card dialog

在代码里直接引入使用:

import { Button } from "@/components/ui/button"

常见报错:Tailwind not found——先完成 Tailwind 初始化;component already exists——已添加,无需重复。

五、使用示例

加入按钮组件后即可在页面使用:

<Button variant="outline">点击我</Button>

因为源码就在项目里,你可以直接打开 components/ui/button.tsx 改默认样式、加变体,完全不受上游限制。

六、常见问题

  • 它是 npm 包吗?不是,组件以源码形式拷贝进项目。
  • 能用于生产吗?大量生产项目在用。
  • 和 MUI 区别?MUI 是黑盒依赖,shadcn 给你源码。
  • 升级怎么办?官方提供迁移与升级指引。

七、总结

shadcn/ui 重新定义了「组件库」:把控制权交回开发者。它用源码复制取代黑盒依赖,兼顾质量、可访问性与自由度,是 React 项目做 UI 时最值得采用的起点之一。