---
url: https://eoht.net/fe/pnpm/package.md
description: 区分 pnpm install 与 pnpm add，演示生产依赖、开发依赖和全局工具的管理，说明冻结锁文件安装、按版本范围更新及移除包后的验证方法。
---

# pnpm 依赖管理：安装、添加、更新与移除 {#pnpm-dependency-management}

先按照项目的 `packageManager` 使用约定的 pnpm 版本，再进入含 `package.json` 的项目目录。工具尚未安装时，查看 [pnpm 安装与升级](/fe/pnpm/install)。下面的包名是示例，按项目实际需要选择执行。

## 安装现有依赖或添加新包 {#install-package-with-pnpm}

克隆已有项目后，安装其声明的依赖：

```sh
pnpm install
```

需要严格沿用已提交的 `pnpm-lock.yaml`，例如构建或 CI 验证时：

```sh
pnpm install --frozen-lockfile
```

冻结安装不会更新锁文件；声明与锁文件不一致时应先查明原因，不能靠删锁文件或关闭校验掩盖差异。工作区项目还需确认命令作用范围。详见 [pnpm install](https://pnpm.io/cli/install)。

添加一个新依赖使用 `pnpm add`，不要与安装整个项目混淆：

```sh
pnpm add dayjs           # 加入 dependencies
pnpm add -D typescript   # 加入 devDependencies
pnpm add -g http-server  # 安装个人全局命令行工具
```

| 类型 | 选择依据 |
| --- | --- |
| `dependencies` | 应用运行时需要的包 |
| `devDependencies` | 开发、测试或构建工具；执行生产构建时也可能需要它们 |
| 全局工具 | 从终端直接使用的个人工具，不代替项目自身的依赖声明 |

`add` 会更新相应依赖声明和锁文件；完成后检查 `package.json`、`pnpm-lock.yaml` 的差异。版本、来源及更多选项见 [pnpm add](https://pnpm.io/cli/add)。

## 更新依赖 {#update-project-dependencies}

```sh
pnpm up dayjs           # 按 package.json 的版本范围更新
pnpm up                 # 按各自版本范围更新全部依赖
```

`pnpm up dayjs --latest` 会尝试更新到最新版本，可能跨越原来的主版本范围，应先确认迁移要求。更新后运行项目已有的测试或构建，并审查依赖声明与锁文件；这些操作与 `pnpm self-update` 更新包管理器本身不同。详见 [pnpm update](https://pnpm.io/cli/update)。

## 移除包 {#remove-package-with-pnpm}

```sh
pnpm remove dayjs           # 移除项目依赖及对应声明
pnpm remove -g http-server  # 移除全局工具
```

移除后还要删除源码中对应的 import 或配置引用，再运行项目检查。不要只手工删除 `node_modules` 下的目录，那不会同步维护依赖声明和锁文件。更多范围选项见 [pnpm remove](https://pnpm.io/cli/remove)。
