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 命令用于初始化一个新项目或将 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 命令的关键选项
--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 变量、依赖项和组件文件的复杂文件转换功能。
文件转换管道
updateCssVars() 函数处理 CSS 变量注入和主题管理,支持 Tailwind CSS v3 和 v4。
关键 CSS 转换功能
@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 包含全面的错误处理和验证功能
来源: packages/shadcn/src/utils/handle-error.ts packages/shadcn/src/preflights/ packages/shadcn/src/registry/schema.ts1-131