在已经安装好 Node.js 22 的 Ubuntu 系统中,安装 pnpm(高性能替代 npm/yarn 的包管理器)非常简单,推荐以下 3 种常用方法(优先选官方推荐的无权限方式):
一、方法 1:官方推荐(无权限,最安全)
pnpm 官方提供了一键安装脚本,无需 sudo,自动适配 Node 环境,推荐优先使用:
bash
curl -fsSL https://get.pnpm.io/install.sh | sh -
后续步骤:激活 pnpm(生效环境变量)
安装完成后,需要重新加载终端配置文件,让 pnpm 命令生效:
bash
# 若用 Bash(默认终端)
source ~/.bashrc
# 若用 Zsh(如 Oh My Zsh)
source ~/.zshrc
验证安装
bash
pnpm -v # 输出 pnpm 版本(如 9.12.3,版本会自动更新到最新稳定版)
二、方法 2:通过 npm 全局安装
如果已经习惯用 npm,也可以直接通过 npm 全局安装 pnpm(需确保 Node.js 已正确配置,无需 sudo):
bash
npm install -g pnpm
验证安装
bash
pnpm -v # 输出版本即成功
⚠️ 注意:如果之前用 sudo npm 导致过权限问题,建议先执行以下命令修复权限(避免安装失败):
bash
# 重置 npm 全局目录权限(无需 sudo)
sudo chown -R $USER:$GROUP ~/.npm
三、方法 3:通过 nvm 安装(适配多 Node 版本)
如果之前用 nvm 安装了 Node.js 22(多版本管理场景),可以通过 nvm 自带的命令安装 pnpm,确保 pnpm 与当前 Node 版本绑定:
bash
# 先确保当前使用的是 Node 22(若已切换则跳过)
nvm use 22
# 安装 pnpm
npm install -g pnpm
验证同样执行 pnpm -v 即可。
四、方法 4:手动配置(适合需要指定版本)
如果需要安装特定版本的 pnpm(如旧版兼容项目),可手动设置环境变量后安装:
-
先创建 pnpm 全局目录(可选,避免权限问题):
bashmkdir -p ~/.pnpm-global -
安装指定版本(以 9.0.0 为例):
bashnpm install -g pnpm@9.0.0 -
验证版本:
bashpnpm -v # 输出 9.0.0 即成功
五、后续优化(必做,加速下载)
默认 pnpm 用官方源,国内访问较慢,建议更换为淘宝镜像(和 npm 镜像一致):
bash
# 设置淘宝镜像(永久生效)
pnpm config set registry https://registry.npmmirror.com
# 验证镜像是否生效
pnpm config get registry # 输出 https://registry.npmmirror.com 即成功
六、常用 pnpm 命令(快速上手)
安装完成后,可直接替代 npm 使用,核心命令:
| 功能 | pnpm 命令 | 对应 npm 命令 |
|---|---|---|
| 初始化项目 | pnpm init |
npm init |
| 安装项目依赖 | pnpm install(或 pnpm i) |
npm install |
| 全局安装包 | pnpm add -g 包名 |
npm install -g 包名 |
| 安装生产依赖 | pnpm add 包名 |
npm install 包名 |
| 安装开发依赖 | pnpm add -D 包名 |
npm install -D 包名 |
| 卸载依赖 | pnpm remove 包名(或 pnpm rm) |
npm uninstall 包名 |
| 运行脚本(package.json) | pnpm run 脚本名 |
npm run 脚本名 |
七、常见问题解决
-
pnpm 命令找不到 :
- 重新执行
source ~/.bashrc或source ~/.zshrc,若仍无效,重启终端即可。
- 重新执行
-
安装慢 / 超时 :
-
确认已更换淘宝镜像(参考步骤五),或临时用镜像加速安装:
bashpnpm install 包名 --registry https://registry.npmmirror.com
-
-
权限报错(EACCES) :
-
不要用
sudo pnpm,若之前误操作导致权限问题,执行:bashsudo chown -R $USER:$GROUP ~/.pnpm-store # 修复 pnpm 存储目录权限
-
通过以上任意一种方法,都能快速在 Ubuntu 中安装 pnpm,结合之前的 Node.js 22,即可高效进行项目开发~