菜单

CLI 工具

相关源文件

shadcn CLI 工具是管理 shadcn/ui 生态系统中组件安装、项目初始化和配置的主要接口。它提供了自动设置、依赖项管理和文件转换功能,用于将 UI 组件集成到 React 项目中。

有关 CLI 交互的组件注册表系统的信息,请参阅 组件注册表系统。有关配置模式的详细信息,请参阅 配置

架构概述

CLI 工具被构建为一个 Node.js 应用程序,具有独立的命令处理程序、注册表集成和文件转换实用程序。

CLI 工具架构概览

来源:packages/shadcn/src/commands/init.ts1-415 packages/shadcn/src/commands/add.ts1-277 packages/shadcn/src/utils/add-components.ts1-320 packages/shadcn/src/registry/api.ts1-535

命令系统

Init 命令

init 命令用于初始化一个新项目或将 shadcn/ui 添加到现有项目中。它负责项目检测、配置文件创建和初始组件安装。

Init 命令工作流程

init 命令支持几个关键选项

  • --yes:跳过确认提示
  • --defaults:使用默认配置
  • --src-dir:使用 src 目录结构
  • --css-variables:启用 CSS 变量进行主题化
  • --style:指定组件样式(default, new-york)
  • --base-color:设置基础颜色主题

来源:packages/shadcn/src/commands/init.ts82-154 packages/shadcn/src/preflights/preflight-init.ts packages/shadcn/src/utils/create-project.ts

Add 命令

add 命令将特定组件安装到现有项目中。它负责依赖项解析、文件转换和配置更新。

Add 命令工作流程

Add 命令的关键选项

  • --overwrite:覆盖现有文件
  • --all:添加所有可用组件
  • --path:自定义安装路径
  • --silent:禁止输出

来源:packages/shadcn/src/commands/add.ts46-218 packages/shadcn/src/preflights/preflight-add.ts packages/shadcn/src/utils/add-components.ts29-117

注册表集成

CLI 与组件注册表集成,以获取组件定义、解析依赖项并下载组件文件。

注册表 API 集成

注册表客户端提供缓存、错误处理,并支持官方 shadcn/ui 组件和自定义注册表 URL。REGISTRY_URL 环境变量默认为 https://ui.shadcn.org.cn/r

关键注册表函数

  • getRegistryIndex():获取可用组件列表
  • getRegistryItem():获取特定组件定义
  • registryResolveItemsTree():解析组件依赖树
  • fetchRegistry():下载带缓存的组件文件

来源:packages/shadcn/src/registry/api.ts53-350 packages/shadcn/src/registry/api.ts22-26 packages/shadcn/src/registry/api.ts178-260

配置管理

CLI 使用 components.json 作为项目设置和组件安装路径的主要配置文件。

配置架构

配置系统负责路径解析、框架检测和项目结构分析。

来源:packages/shadcn/src/utils/get-config.ts apps/www/content/docs/components-json.mdx1-214

文件转换系统

CLI 包含用于 CSS 变量、依赖项和组件文件的复杂文件转换功能。

文件转换管道

CSS 变量管理

updateCssVars() 函数处理 CSS 变量注入和主题管理,支持 Tailwind CSS v3 和 v4。

关键 CSS 转换功能

  • 浅色/深色主题 CSS 变量
  • Tailwind v4 @theme 指令支持
  • 自定义变体注入(@custom-variant
  • 插件管理(@plugin
  • 基础层更新以实现一致的样式

来源:packages/shadcn/src/utils/updaters/update-css-vars.ts18-152 packages/shadcn/src/utils/updaters/update-css-vars.ts393-496 packages/shadcn/src/utils/updaters/update-css-vars.ts498-592

依赖管理

CLI 自动安装 NPM 依赖项并管理版本冲突。

依赖管理流程

来源:packages/shadcn/src/utils/updaters/update-dependencies.ts packages/shadcn/src/utils/add-components.ts106-108

组件安装工作流程

完整的组件安装过程涉及多个协调步骤

完整的组件安装过程

该工作流程支持单个组件和批量安装,并为 monorepo 设置提供工作区检测。

来源:packages/shadcn/src/utils/add-components.ts63-117 packages/shadcn/src/utils/add-components.ts119-305 packages/shadcn/src/utils/updaters/update-files.ts

错误处理与验证

CLI 包含全面的错误处理和验证功能

  • 预检查:项目结构验证、依赖项冲突
  • 模式验证:使用 Zod 模式进行注册表项验证
  • 网络错误处理:注册表获取失败、代理支持
  • 文件系统错误:权限问题、路径冲突
  • 用户确认:破坏性操作需要确认

来源: packages/shadcn/src/utils/handle-error.ts packages/shadcn/src/preflights/ packages/shadcn/src/registry/schema.ts1-131