pnpm 是一个具有速度快、节省磁盘空间的特点的软件包管理器。它比 npm 快近 2 倍,node_modules 中的文件克隆或硬链接自单一存储位置,内置对单个源码仓库中包含多个软件包的支持,创建的 node_modules 默认并非扁平结构,权限严格。pnpm 拥有广泛的用户群体,包括 Compass、Microsoft、Prezi、ByteDance、JustAnswer 等。
为什么要用pnpm
起因是因为我在hexo中安装插件是是用npm进行安装的,经常性的卡死(换用国内镜像源也不能解决)和占用大量磁盘空间,受不了了,在某一天我突然萌生了为什么不使用其它包管理器,于是pnpm就进入了我的眼前。当然包管理器还有cnpm,yarn… 不使用它们是因为pnpm的优势更大。
安装pnpm
使用独立脚本安装
即使没有安装 Node.js,也可以使用以下脚本安装 pnpm。
Windows
使用 PowerShell:
1 | Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression |
使用 npm 安装
当然pnpm也可以使用npm进行安装
npm官方提供了两个 pnpm CLI 包, pnpm
和 @pnpm/exe
。
1 | npm install -g pnpm |
或者
1 | npm install -g @pnpm/exe |
安装完成后,可以配置国内镜像源以提升下载速度
1 | # 获取当前配置的镜像地址 |
兼容性
以下是各版本 pnpm 与各版本 Node.js 之间的兼容性表格。
Node.js | pnpm 7 | pnpm 8 | pnpm 9 |
---|---|---|---|
Node.js 12 | ❌ | ❌ | ❌ |
Node.js 14 | ✔️ | ❌ | ❌ |
Node.js 16 | ✔️ | ✔️ | ❌ |
Node.js 18 | ✔️ | ✔️ | ✔️ |
Node.js 20 | ✔️ | ✔️ | ✔️ |
用法
常用命令对比
npm 命令 | pnpm 等价命令 |
---|---|
npm install | pnpm install 安装全部依赖 |
npm install 包名 | pnpm add (-D) 包名 安装指定包(pnpm install也可以) |
npm uninstall 包名 | pnpm remove 包名 移除指定包 |
npm run 脚本 | pnpm 脚本 运行脚本 |
pnpm 的大部分用法和npm相同,可能有些差异,如果在使用过程遇到了什么问题可以阅读
建议配置
配置PNPM全局安装路径
1 | # 允许设置全局安装包的 bin 文件的目标目录。 |
纸鹿大佬的建议
@纸鹿 (@L33Z22L11)
使用 npm 安装 pnpm 后,建议重新通过 pnpm 安装 pnpm,再将 npm 安装的 pnpm 卸载掉。
1 | npm install -g pnpm |