# 项目依赖源配置检查报告 ## 概述 本报告详细说明了 `ai-chatbot` 项目安装依赖时使用的所有依赖源及其来源。 --- ## 1. 包管理器配置 ### 1.1 包管理器类型 - **包管理器**: `pnpm` - **版本**: `9.12.3` (在 `package.json` 中通过 `packageManager` 字段指定) - **配置文件位置**: `package.json` 第 122 行 ```json "packageManager": "pnpm@9.12.3" ``` ### 1.2 Registry 配置 #### 当前配置 - **主要 Registry**: `https://registry.npmjs.org/` - **配置来源**: pnpm 全局默认配置 - **配置方式**: 使用 pnpm 默认配置(未在项目级配置文件中覆盖) #### 配置检查结果 ```bash # 当前 registry 配置 $ pnpm config get registry https://registry.npmjs.org/ ``` #### Scope Registry 配置 - **Scope 特定 Registry**: 无 - **检查结果**: 未配置任何 scope 特定的 registry(如 `@scope:registry`) --- ## 2. 项目级配置文件检查 ### 2.1 存在的配置文件 - ✅ `package.json` - 包含依赖声明和包管理器版本 - ✅ `pnpm-lock.yaml` - 锁定文件,包含依赖版本和完整性校验 - ❌ `.npmrc` - **不存在**(未在项目根目录找到) - ❌ `.yarnrc` / `.yarnrc.yml` - **不存在**(项目不使用 Yarn) ### 2.2 package.json 中的特殊配置 #### pnpm 覆盖配置 (pnpm.overrides) ```json "pnpm": { "overrides": { "sharp": "^0.34.5" } } ``` - **作用**: 强制所有依赖使用指定版本的 `sharp` 包 - **影响**: 不影响 registry 配置,仅影响版本解析 ### 2.3 pnpm-lock.yaml 分析 - **Lockfile 版本**: `9.0` - **Registry 信息**: lockfile 中不包含显式的 registry URL - **完整性校验**: 所有包使用 `integrity` 字段(sha512)进行完整性校验 - **包解析**: 所有包都从默认的 npm registry (`https://registry.npmjs.org/`) 解析 --- ## 3. 依赖来源分类 ### 3.1 所有依赖都来自同一个源 **所有依赖包(包括 dependencies 和 devDependencies)均来自**: - **Registry URL**: `https://registry.npmjs.org/` - **Registry 类型**: 官方 npm 公共注册表 ### 3.2 依赖包列表 项目总共包含以下依赖(来自 `package.json`): #### 生产依赖 (dependencies) - 约 70+ 个包 主要依赖包括: - AI SDK 相关: `@ai-sdk/*`, `ai` - React 相关: `react@19.0.0-rc`, `react-dom@19.0.0-rc`, `next@16.0.5` - UI 组件: `@radix-ui/*`, `lucide-react`, `framer-motion` - 工具库: `date-fns`, `zod`, `nanoid`, `bcrypt-ts` - AWS: `@aws-sdk/client-s3` - Vercel: `@vercel/*` - 数据库: `drizzle-orm`, `postgres` - 其他: `redis`, `sharp`, `@xenova/transformers` 等 #### 开发依赖 (devDependencies) - 约 15 个包 主要开发依赖包括: - 代码质量: `@biomejs/biome`, `ultracite` - 测试: `@playwright/test` - 类型定义: `@types/*` - 构建工具: `typescript`, `tsx`, `drizzle-kit` - 样式: `tailwindcss`, `@tailwindcss/*`, `postcss` --- ## 4. 配置层级说明 ### 4.1 配置优先级(pnpm) pnpm 的配置优先级(从高到低): 1. **命令行参数** (最高优先级) 2. **环境变量** (如 `PNPM_REGISTRY`) 3. **项目级 `.npmrc` 文件** (本项目不存在) 4. **用户级 `~/.npmrc` 或 `~/.config/pnpm/rc`** 5. **全局默认配置** (当前使用的) 6. **npm 默认值** (`https://registry.npmjs.org/`) ### 4.2 当前配置层级 由于项目根目录没有 `.npmrc` 文件,项目使用的是: - **第 4/5 层级**: 用户级或全局 pnpm 配置 - **第 6 层级**: npm 默认 registry (`https://registry.npmjs.org/`) --- ## 5. 实际安装行为 ### 5.1 安装命令 项目使用的安装命令: ```bash pnpm install --frozen-lockfile # 生产环境(CI/CD) pnpm install # 开发环境 ``` ### 5.2 安装流程 1. pnpm 读取 `package.json` 和 `pnpm-lock.yaml` 2. 根据 lockfile 中的 `integrity` 校验包的完整性 3. 从 `https://registry.npmjs.org/` 下载所有包 4. 安装到 `node_modules`(使用 pnpm 的符号链接策略) --- ## 6. 服务器部署环境 ### 6.1 服务器配置 根据部署脚本分析,服务器端同样使用: - **Registry**: `https://registry.npmjs.org/`(默认) - **安装命令**: `pnpm install --frozen-lockfile` 或 `pnpm install` ### 6.2 相关脚本 - `auto-deploy.sh`: 使用 `pnpm install --production=false` - `final-deploy.sh`: 使用 `pnpm install` - `migrate-server.sh`: 使用 `pnpm install --frozen-lockfile` --- ## 7. CI/CD 配置 ### 7.1 GitHub Actions 根据 `.github/workflows/playwright.yml`: - 使用 `pnpm/action-setup@v2` 设置 pnpm - 使用 `pnpm install --frozen-lockfile` 安装依赖 - 默认使用 npm registry (`https://registry.npmjs.org/`) --- ## 8. 总结 ### 8.1 依赖源统一性 ✅ **所有依赖都来自同一个源**: `https://registry.npmjs.org/` ### 8.2 配置特点 - ✅ **简单统一**: 未使用任何自定义 registry 配置 - ✅ **标准配置**: 使用 npm 官方公共注册表 - ✅ **无私有源**: 未配置任何私有或镜像源 - ✅ **无 scope 配置**: 未为特定 scope(如 `@ai-sdk`)配置专门的 registry ### 8.3 建议 如果需要切换 registry(例如使用国内镜像加速),可以: 1. **创建项目级 `.npmrc` 文件**: ```ini registry=https://registry.npmmirror.com/ # 或 registry=https://registry.npmjs.org/ ``` 2. **使用环境变量**: ```bash export PNPM_REGISTRY=https://registry.npmmirror.com/ pnpm install ``` 3. **使用命令行参数**: ```bash pnpm install --registry https://registry.npmmirror.com/ ``` --- ## 9. 检查命令 ### 9.1 本地检查 ```bash # 查看当前 registry 配置 pnpm config get registry # 查看所有 pnpm 配置 pnpm config list # 查看项目依赖 pnpm list --depth=0 # 检查 lockfile cat pnpm-lock.yaml | head -50 ``` ### 9.2 验证依赖来源 ```bash # 查看特定包的详细信息(包括来源) pnpm info # 例如: pnpm info react pnpm info next ``` --- **报告生成时间**: 2025-01-XX **检查范围**: 项目根目录及所有配置文件 **检查工具**: pnpm config, package.json, pnpm-lock.yaml