pnpm 是一个快速、节省磁盘空间的 Node.js 包管理工具,相比 npm 和 yarn,它通过硬链接 和符号链接 技术优化了依赖安装效率。以下是 pnpm 的核心用法和常见场景说明:
1. 安装 pnpm
确保已安装 Node.js,然后通过以下命令安装 pnpm:
bash
|---|-----------------------------------|
| | npm install -g pnpm |
| | # 或通过核心包管理器(如 Homebrew、Scoop)安装 |
2. 核心命令
初始化项目
bash
|---|-------------------------------|
| | pnpm init # 创建 package.json |
安装依赖
-
安装所有依赖 (根据
package.json):bash|---|------------------------------|
| |pnpm install # 或简写为 pnpm i| -
安装特定包 :
bash|---|------------------------------------------------|
| |pnpm add lodash # 添加到 dependencies|
| |pnpm add -D typescript # 添加到 devDependencies|
| |pnpm add -g pnpm # 全局安装包| -
安装指定版本 :
bash|---|-------------------------|
| |pnpm add react@18.2.0|
更新依赖
-
更新所有依赖 :
bash|---|---------------------------|
| |pnpm update # 或 pnpm up| -
更新特定包 :
bash|---|----------------------|
| |pnpm update lodash|
卸载依赖
bash
|---|-----------------------------------------------------|
| | pnpm remove lodash # 从 dependencies 中移除 |
| | pnpm remove -D typescript # 从 devDependencies 中移除 |
运行脚本
bash
|---|-------------------------------------------------------|
| | pnpm run dev # 运行 package.json 中 scripts 定义的 dev 脚本 |
| | pnpm dev # 简写(如果脚本名无冲突) |
全局命令
-
查看全局安装的包 :
bash|---|--------------------------|
| |pnpm list -g --depth=0| -
升级 pnpm 自身 :
bash|---|--------------------|
| |pnpm add -g pnpm|
3. pnpm 的优势
节省磁盘空间
- 硬链接 :同一依赖的不同版本在全局存储(
~/.pnpm-store)中只保存一份,项目通过符号链接引用。 - 扁平化依赖 :避免
node_modules嵌套过深(类似 yarn 的扁平化,但更高效)。
性能优化
- 并行安装:利用多线程加速依赖下载。
- 增量安装:仅更新变更的依赖,而非全部重新安装。
安全性
更新依赖
卸载依赖
bash
|---|-----------------------------------------------------|
| | pnpm remove lodash # 从 dependencies 中移除 |
| | pnpm remove -D typescript # 从 devDependencies 中移除 |
运行脚本
bash
|---|-------------------------------------------------------|
| | pnpm run dev # 运行 package.json 中 scripts 定义的 dev 脚本 |
| | pnpm dev # 简写(如果脚本名无冲突) |
全局命令
3. pnpm 的优势
节省磁盘空间
性能优化
安全性
-
严格依赖隔离 :通过符号链接确保项目只能访问其声明的依赖,避免依赖污染。
pnpm是一个快速、节省磁盘空间的 Node.js 包管理工具,相比npm和yarn,它通过硬链接 和符号链接 技术优化了依赖安装效率。以下是pnpm的核心用法和常见场景说明:
1. 安装 pnpm
确保已安装 Node.js,然后通过以下命令安装 pnpm:
bash|---|-----------------------------------|
| |npm install -g pnpm|
| |# 或通过核心包管理器(如 Homebrew、Scoop)安装|
2. 核心命令
初始化项目
bash|---|-------------------------------|
| |pnpm init # 创建 package.json|安装依赖
-
安装所有依赖 (根据
package.json):bash|---|------------------------------|
| |pnpm install # 或简写为 pnpm i| -
安装特定包 :
bash|---|------------------------------------------------|
| |pnpm add lodash # 添加到 dependencies|
| |pnpm add -D typescript # 添加到 devDependencies|
| |pnpm add -g pnpm # 全局安装包| -
安装指定版本 :
bash|---|-------------------------|
| |pnpm add react@18.2.0| -
更新所有依赖 :
bash|---|---------------------------|
| |pnpm update # 或 pnpm up| -
更新特定包 :
bash|---|----------------------|
| |pnpm update lodash| -
查看全局安装的包 :
bash|---|--------------------------|
| |pnpm list -g --depth=0| -
升级 pnpm 自身 :
bash|---|--------------------|
| |pnpm add -g pnpm| -
硬链接 :同一依赖的不同版本在全局存储(
~/.pnpm-store)中只保存一份,项目通过符号链接引用。 -
扁平化依赖 :避免
node_modules嵌套过深(类似 yarn 的扁平化,但更高效)。 -
并行安装:利用多线程加速依赖下载。
-
增量安装:仅更新变更的依赖,而非全部重新安装。
-
严格依赖隔离:通过符号链接确保项目只能访问其声明的依赖,避免依赖污染。