shadcn/ui 的核心理念

shadcn/ui 不是传统的组件库——它不提供 npm 包,而是让你将组件源码直接复制到你的项目中。这种做法的核心优势在于:

  • **完全控制**:每个组件都是你的代码,可以任意修改
  • **无版本锁定**:不会被上游的 breaking change 影响
  • **按需引入**:只引入你需要的组件

生产环境的挑战

但在实际落地中,我们遇到了几个关键问题:

组件一致性

当多个开发者各自复制组件后,很容易出现分支差异——同一个 Button 组件在不同页面上有了不同的样式。

解决方案

建立组件审查机制:所有对基础组件的修改必须经过统一审查,并在组件文档中同步更新。

主题覆盖

shadcn/ui 的 CSS 变量设计使得主题切换变得简单,但复杂的主题层级(多品牌、多租户)需要额外的设计。