1. pnpm add 包名
- 行为:
- 安装包到
node_modules
。 - 自动将包添加到
package.json
的dependencies
中(默认)。 - 支持通过参数指定依赖类型(如
-D
表示devDependencies
,-O
表示optionalDependencies
)。 - 更新
pnpm-lock.yaml
文件。
- 安装包到
- 使用场景:
- 明确要将包作为项目依赖持久化保存时。
- 需要控制依赖类型(生产依赖、开发依赖等)。
- 示例:
pnpm add axios # 添加到生产依赖(dependencies) pnpm add typescript -D # 添加到开发依赖(devDependencies)
2. pnpm install 包名
- 行为:
- 安装包到
node_modules
。 - 默认不会修改
package.json
(依赖不会被记录到项目中)。 - 仅临时安装包,适合测试或一次性使用。
- 若需要保存到
package.json
,需手动添加--save
或-D
等参数(但pnpm
不推荐此用法,建议优先用add
)。
- 安装包到
- 使用场景:
- 临时安装包(例如快速测试某个包,但不确定是否需要长期依赖)。
- 在已有依赖的基础上补充安装(但这种情况较少见)。
- 示例:
pnpm install lodash # 仅安装到 node_modules,不更新 package.json pnpm install lodash --save # 等效于 pnpm add lodash(但更推荐用 add)
关键区别总结
行为 | pnpm add 包名 | pnpm install 包名 |
---|---|---|
安装到 node_modules | ✅ | ✅ |
更新 package.json | ✅(默认) | ❌(除非手动加 --save ) |
更新 pnpm-lock.yaml | ✅ | ✅(仅记录版本) |
支持指定依赖类型 | ✅(如 -D , -O ) | ❌(需手动加参数) |
如何选择?
-
大多数情况用
pnpm add
当需要将包作为项目依赖持久化时,始终使用pnpm add
。它能明确表达“添加新依赖”的意图,并自动更新package.json
,避免遗漏依赖记录。 -
极少数情况用
pnpm install
仅当需要临时安装包且明确不希望修改package.json
时使用(例如测试某个包的兼容性)。但这种情况较为少见,且容易导致团队协作时的依赖缺失问题。
总结
- 使用
pnpm add
:添加新依赖,持久化到项目中。 - 使用
pnpm install
:仅安装现有依赖或临时测试包。
始终优先选择 pnpm add
,除非你明确知道不需要记录依赖!