菜单

依赖管理

相关源文件

本文档介绍了 shadcn CLI 工具中的依赖管理系统,特别是它如何处理包安装、包管理器检测以及 React 19 兼容性问题。该系统在安装过程中自动管理组件依赖,并智能处理对等依赖冲突。

有关项目配置和设置的信息,请参阅 配置。有关组件安装工作流的详细信息,请参阅 组件管理

概述

依赖管理系统集中在 updateDependencies 函数中,它处理跨不同包管理器安装 npm 包的复杂性,并为某些包生态系统中出现的 React 19 兼容性问题提供特殊支持。

包管理器支持

该系统支持多种包管理器,具有自动检测和特定于包管理器的命令生成功能。

包管理器检测流程

来源: packages/shadcn/src/utils/updaters/update-dependencies.ts33-99 packages/shadcn/test/utils/updaters/update-dependencies.test.ts15-138

包管理器命令映射

包管理器Install 命令开发依赖特殊处理
npminstall-D 标志React 19 标志
pnpmadd-D 标志
bunadd-D 标志
denoadd-D 标志npm: 前缀

来源: packages/shadcn/src/utils/updaters/update-dependencies.ts65-96

React 19 兼容性系统

该系统包含针对 React 19 对等依赖冲突的特殊处理,这是使用 npm 作为包管理器时的重大问题。

React 19 检测逻辑

来源: packages/shadcn/src/utils/updaters/update-dependencies.ts101-109

交互式标志选择

当使用 npm 检测到 React 19 时,系统会提供一个交互式提示来处理对等依赖冲突。

来源: packages/shadcn/src/utils/updaters/update-dependencies.ts37-61 apps/www/content/docs/react-19.mdx111-120

警告消息引用了全面的 React 19 文档,该文档解释了兼容性情况并为用户提供了指导。

依赖安装过程

核心安装工作流

来源: packages/shadcn/src/utils/updaters/update-dependencies.ts10-99

命令构建逻辑

系统根据检测到的包管理器和配置构建包管理器命令。

场景命令结构
npm 正常["install", ...dependencies]
npm 带标志["install", "--force", ...dependencies]
pnpm/bun["add", ...dependencies]
deno["add", ...dependencies.map(dep => "npm:" + dep)]
开发依赖在依赖项前添加 "-D" 标志。

来源: packages/shadcn/src/utils/updaters/update-dependencies.ts66-96

测试覆盖与验证

依赖管理系统包含针对各种场景的全面测试覆盖。

测试场景矩阵

来源: packages/shadcn/test/utils/updaters/update-dependencies.test.ts15-138 packages/shadcn/test/fixtures/project-npm-react19/package.json1-10 packages/shadcn/test/fixtures/project-deno/deno.json1

测试固定装置包括每个支持的包管理器和 React 版本组合的真实项目配置,确保依赖管理系统在所有支持的环境中都能正常工作。