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 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 的扁平化,但更高效)。 - 并行安装:利用多线程加速依赖下载。
- 增量安装:仅更新变更的依赖,而非全部重新安装。
- 严格依赖隔离:通过符号链接确保项目只能访问其声明的依赖,避免依赖污染。