# 依赖管理策略

## 1. 策略概述

本项目采用 pnpm 进行依赖管理，通过集中化管理策略，确保依赖版本一致性并降低维护成本。

## 2. 依赖分类管理

### 2.1 开发依赖 (devDependencies)

- **管理位置**: 根目录 package.json
- **内容**: 构建工具、代码规范工具、测试工具等
- **示例**: vite, typescript, eslint, prettier 等

### 2.2 生产依赖 (dependencies)

- **管理位置**: 根目录 package.json
- **内容**: 项目运行所需的依赖
- **示例**: vue, vue-router, pinia 等

### 2.3 工作区内部包

- **管理方式**: 使用 `workspace:*` 协议
- **示例**: `"@tianyio/quality-helper": "workspace:*"`

## 3. 操作指南

### 3.1 添加新依赖

#### 添加开发依赖

```bash
# 添加开发依赖
pnpm add -D <package-name>
```

#### 添加生产依赖

```bash
# 添加生产依赖
pnpm add <package-name>
```

#### 添加工作区内部依赖

```bash
# 添加工作区内部依赖
pnpm add <package-name> --workspace
```

### 3.2 更新依赖

#### 更新所有依赖

```bash
# 更新所有依赖
pnpm update
```

#### 更新特定依赖

```bash
# 更新特定依赖
pnpm update <package-name>
```

### 3.3 移除依赖

```bash
# 移除依赖
pnpm remove <package-name>
```

## 4. 最佳实践

### 4.1 依赖版本一致性

- 所有公共依赖版本由根目录 package.json 统一管理
- 避免在子项目中重复声明公共依赖

### 4.2 内部包引用

- 使用 `workspace:*` 协议引用工作区内部包
- 确保内部包版本自动同步

### 4.3 依赖审计

```bash
# 查看依赖树
pnpm list

# 查看过时依赖
pnpm outdated

# 安全漏洞扫描
pnpm audit
```

## 5. 工具包依赖管理

### 5.1 @tianyio/quality-helper

质量工具包包含以下功能：

- 项目脚手架
- 配置文件更新
- 依赖管理
- 版本信息生成

### 5.2 @tianyio/fast-util-lib

工具库包含以下功能：

- 事件系统
- 日志模块
- 网络模块
- 性能监控
- 错误处理

## 6. 常见问题处理

### 6.1 依赖冲突

1. 检查 pnpm-workspace.yaml 配置是否正确
2. 使用 `pnpm list <package-name>` 查看版本分布
3. 在根目录 package.json 中使用 `pnpm.overrides` 字段强制统一版本

### 6.2 依赖未找到

1. 确认 pnpm-workspace.yaml 中包含了正确的包路径
2. 检查内部包是否正确使用 `workspace:*` 协议
3. 运行 `pnpm install` 重新安装依赖

## 7. 维护建议

1. **定期更新**: 每月定期检查并更新依赖版本
2. **版本锁定**: 使用 `pnpm update` 而非直接修改版本号
3. **文档同步**: 依赖结构调整后及时更新本文档
