pnpm(Performant npm)的安装

优点:
  • 极快的安装速度:利用硬链接和全局缓存,避免重复下载。

  • 节省磁盘空间:所有项目共享同一依赖版本,减少冗余。

  • 严格依赖隔离:避免"幽灵依赖",安全性更高。

  • 原生 Monorepo 支持 :pnpm workspaces 比 npm/yarn 更高效。

如何强制使用 pnpm?

在 package.json 中添加:

复制代码
{
  "scripts": {
    "preinstall": "npx only-allow pnpm"
  }
}

1. 安装 pnpm

方法一:通过 npm 安装(推荐)
复制代码
# 全局安装(需已安装 Node.js)
npm install -g pnpm

# 验证安装
pnpm --version
方法二:独立脚本安装(无需 Node.js)
复制代码
# macOS/Linux
curl -fsSL https://get.pnpm.io/install.sh | sh -

# Windows (PowerShell)
iwr https://get.pnpm.io/install.ps1 -useb | iex
方法三:使用包管理器

macOS (Homebrew):

复制代码
brew install pnpm

Linux (snap):

复制代码
sudo snap install pnpm --classic

Windows (Scoop):

复制代码
scoop install pnpm

2. 配置环境变量(可选)

pnpm 默认将全局包安装到 <home>/.pnpm-store,如需修改存储路径:

复制代码
# 设置全局存储目录(替换为你的路径)
pnpm config set store-dir /path/to/store
配置镜像源(国内加速)
复制代码
# 使用淘宝镜像
pnpm config set registry https://registry.npmmirror.com

# 恢复默认
pnpm config set registry https://registry.npmjs.org

3. 升级与卸载

升级 pnpm

复制代码
# 通过 pnpm 自身升级
pnpm add -g pnpm

# 或使用 npm
npm update -g pnpm
卸载 pnpm
复制代码
# 通过 npm 卸载
npm uninstall -g pnpm

# 彻底删除全局存储(谨慎操作)
rm -rf ~/.pnpm-store

4. 验证安装

复制代码
# 检查版本
pnpm -v

# 查看配置
pnpm config list

# 测试安装依赖
pnpm create vite@latest my-project --template react
cd my-project && pnpm install

常见问题

1. 权限问题(macOS/Linux)

若安装时报权限错误,可加上 sudo 或修复目录权限:

复制代码
sudo npm install -g pnpm
# 或
mkdir ~/.pnpm-store && chown -R $(whoami) ~/.pnpm-store
2. 与 npm/yarn 共存

pnpm 与 npm/yarn 可安全共存,但建议项目内统一工具(通过 engines 字段约束):

复制代码
// package.json
{
  "engines": {
    "pnpm": ">=8.0.0"
  }
}
3. 兼容性警告

某些老旧包可能依赖扁平化 node_modules,可临时启用提升模式:

复制代码
pnpm install --shamefully-hoist

总结

  • 推荐安装方式 :通过 npm install -g pnpm 或独立脚本安装。

  • 国内用户:务必配置镜像源加速。

  • Monorepo 项目 :安装后初始化 pnpm-workspace.yaml 即可使用。

安装完成后,可体验 pnpm 的高效依赖管理和磁盘节省特性!

1. 依赖管理

功能 pnpm 命令 npm/yarn 等效命令
初始化项目 pnpm init npm init / yarn init
安装所有依赖 pnpm install (或 pnpm i) npm install / yarn
安装生产依赖 pnpm add <package> npm install <package>
安装开发依赖 pnpm add -D <package> npm install -D <package>
全局安装 pnpm add -g <package> npm install -g <package>
移除依赖 pnpm remove <package> npm uninstall <package>
更新依赖 pnpm update npm update / yarn upgrade
更新指定依赖 pnpm update <package> npm update <package>
检查过时依赖 pnpm outdated npm outdated

2. 运行脚本

功能 pnpm 命令 npm/yarn 等效命令
运行 package.json 脚本 pnpm run <script> npm run <script>
快捷运行(省略 run) pnpm <script> yarn <script>
交互式脚本选择 pnpm run npm run (无交互)
并行运行多个脚本 pnpm -r run <script> npm-run-all / yarn workspaces run
相关推荐
kyriewen32 分钟前
Skills 榜前 10 我全装了:只有 3 个能直接用
前端·javascript·程序员
IT_陈寒1 小时前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
工控丫丫1 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
jerrywus2 小时前
我用 GPT-6.1-sol 做了台会讲解的 3D 售货机:60 罐饮料,一口没喝上
前端·agent·claude
孟陬3 小时前
Foobar 技术周刊#159:当看不懂代码时,如何高效排障调试。脏页陷阱:一条只读查询,写入数 TB 数据。推测解码:大模型加速利器
前端·人工智能·后端
Zhao-Jichao3 小时前
AI Prompting for Everyone 课程笔记 - P17 图像生成 Imaging Generation
前端
Highcharts.js4 小时前
智能数据分析组件Orbit 正式发布与快速上手体验教程
前端·人工智能·信息可视化·数据分析系统·highcharts·orbit·智能可视化
螺丝钉tina4 小时前
[Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
前端·javascript·typescript
小天源5 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库
Highcharts.js7 小时前
React 中原生支持使用 JSX 组件配置自定义表格 Highcharts Grid
前端·javascript·react.js·前端框架·jsx·highcharts·自定义表格