2025-03-31
编程
00

目录

安装pnpm
1. 使用 npm 安装(推荐)
2. 使用 Corepack 安装(Node.js 16.10+ 自带)
3. 使用 Homebrew(适用于 macOS 和 Linux)
4. 使用 Shell 脚本安装
5. 使用 Docker 安装
验证安装
升级 pnpm
使用pnpm
1. 初始化项目
2. 安装依赖
安装所有依赖
安装单个包
安装开发依赖
全局安装包
3. 更新依赖
更新所有依赖
更新指定依赖
4. 删除依赖
5. 运行脚本
6. 清理缓存
7. 使用工作区(Monorepo 支持)
配置工作区
安装所有工作区依赖
在工作区中运行命令
8. 查看依赖关系树
9. 升级 pnpm
10. 常见选项
与其他包管理器的对比

pnpm(Performant NPM)是一种用于Node.js项目的软件包管理器。它旨在成为npm(Node Package Manager)和yarn的替代品,提供更快速的依赖安装、更高的磁盘空间使用效率以及更强的一致性和可靠性。

pnpm的一些主要特点包括:

  • 高效的磁盘空间使用:通过在全局存储中保存所有版本的包,并在项目中创建符号链接来引用这些包,而不是像npm那样复制整个包到每个项目中。
  • 更快的安装速度:由于其独特的包管理和存储方式,pnpm能够显著加快依赖项的安装过程。
  • 严格的依赖关系解析:pnpm对于依赖版本的解析更加严格,这有助于减少潜在的兼容性问题。
  • 工作空间支持:非常适合用于monorepos(单仓库多项目),可以轻松管理多个相关联的项目。

安装pnpm

安装 pnpm 是一个非常简单的过程,以下是几种常见的安装方法:


1. 使用 npm 安装(推荐)

如果你已经安装了 Node.js 和 npm,可以通过以下命令安装 pnpm

bash
npm install -g pnpm

这会全局安装 pnpm,之后你可以在任何地方使用它。


2. 使用 Corepack 安装(Node.js 16.10+ 自带)

从 Node.js 16.10 开始,Corepack 已经内置在 Node.js 中。你可以通过以下步骤启用并安装 pnpm

  1. 启用 Corepack:

    bash
    corepack enable
  2. 安装最新版本的 pnpm

    bash
    corepack prepare pnpm@latest --activate
  3. 检查是否安装成功:

    bash
    pnpm --version

注意:如果你使用的是较旧版本的 Node.js(低于 16.10),你需要手动安装 Corepack:

bash
npm install -g corepack

3. 使用 Homebrew(适用于 macOS 和 Linux)

如果你使用 macOS 或 Linux,并且安装了 Homebrew,可以通过以下命令安装 pnpm

bash
brew install pnpm

4. 使用 Shell 脚本安装

你可以直接运行官方提供的安装脚本来安装 pnpm

bash
curl -fsSL https://get.pnpm.io/install.sh | sh -

安装完成后,重新加载你的 shell 配置文件(如 .bashrc.zshrc)以确保 pnpm 命令可用。


5. 使用 Docker 安装

如果你使用 Docker,可以直接拉取带有 pnpm 的镜像:

bash
docker run -it --rm node:alpine sh -c "npm install -g pnpm && pnpm --version"

验证安装

无论使用哪种方法安装,都可以通过以下命令验证 pnpm 是否安装成功:

bash
pnpm --version

如果输出了版本号(例如 8.x.x),说明安装成功!


升级 pnpm

如果你想升级到最新版本的 pnpm,可以运行以下命令:

bash
pnpm add -g pnpm

或者使用 npm 升级:

bash
npm install -g pnpm@latest

使用pnpm

pnpm 是一个功能强大的包管理工具,其使用方式与 npmyarn 类似,但有一些独特之处。以下是 pnpm 的常见用法和命令:


1. 初始化项目

如果你想初始化一个新的 Node.js 项目,可以运行以下命令:

bash
pnpm init

这会引导你创建一个 package.json 文件。


2. 安装依赖

安装所有依赖

在项目根目录下(包含 package.json),运行以下命令安装所有依赖:

bash
pnpm install

或者简写为:

bash
pnpm i

安装单个包

安装一个新的包并将其添加到 dependencies 中:

bash
pnpm add <package-name>

例如:

bash
pnpm add lodash

安装开发依赖

将包添加到 devDependencies 中:

bash
pnpm add -D <package-name>

例如:

bash
pnpm add -D typescript

全局安装包

全局安装包(类似于 npm install -g):

bash
pnpm add -g <package-name>

例如:

bash
pnpm add -g create-react-app

3. 更新依赖

更新所有依赖

更新所有依赖到最新版本:

bash
pnpm update

更新指定依赖

更新某个特定的依赖:

bash
pnpm update <package-name>

4. 删除依赖

dependenciesdevDependencies 中移除某个包:

bash
pnpm remove <package-name>

例如:

bash
pnpm remove lodash

5. 运行脚本

pnpm 支持 package.json 中定义的脚本命令。你可以通过以下方式运行脚本:

bash
pnpm run <script-name>

例如,如果你的 package.json 中有以下脚本:

json
"scripts": { "start": "node index.js", "build": "webpack" }

那么可以通过以下方式运行:

bash
pnpm run start pnpm run build

注意:对于常见的脚本(如 starttest 等),可以直接省略 run

bash
pnpm start pnpm test

6. 清理缓存

pnpm 使用了一个全局存储来保存包,有时你可能需要清理缓存:

bash
pnpm store prune

这会删除未被任何项目使用的包。


7. 使用工作区(Monorepo 支持)

pnpm 对 Monorepo(多包仓库)有很好的支持,通过 workspaces 配置可以轻松管理多个子项目。

配置工作区

在根目录的 package.json 中添加 workspaces 字段:

json
{ "name": "my-monorepo", "private": true, "workspaces": [ "packages/*" ] }

安装所有工作区依赖

在根目录运行以下命令,安装所有子项目的依赖:

bash
pnpm install

在工作区中运行命令

可以在某个子项目中运行命令,也可以在整个工作区中运行命令:

  • 在某个子项目中运行:

    bash
    pnpm --filter <workspace-name> <command>
  • 在整个工作区中运行:

    bash
    pnpm -r <command>

例如,在所有工作区中运行 build 脚本:

bash
pnpm -r run build

8. 查看依赖关系树

查看项目的依赖关系树:

bash
pnpm list

或者查看全局安装的包:

bash
pnpm list -g

9. 升级 pnpm

升级 pnpm 到最新版本:

bash
pnpm add -g pnpm@latest

10. 常见选项

  • --save-prod:将包添加到 dependencies(默认行为)。
  • --save-dev-D:将包添加到 devDependencies
  • --global-g:全局安装包。
  • --filter:在 Monorepo 中过滤特定的工作区。
  • --recursive-r:在 Monorepo 中递归执行命令。

与其他包管理器的对比

功能npmyarnpnpm
安装速度更快
磁盘空间利用率中等非常高效
依赖隔离性
Monorepo 支持较弱