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:
Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression
使用 npm 安装
当然pnpm也可以使用npm进行安装
npm官方提供了两个 pnpm CLI 包, pnpm
和 @pnpm/exe
。
npm install -g pnpm
或者
npm install -g @pnpm/exe
安装完成后,可以配置国内镜像源以提升下载速度
# 获取当前配置的镜像地址
pnpm get registry
or
pnpm config get registry
# 设置新的镜像地址
pnpm set registry https://registry.npmmirror.com
兼容性
以下是各版本 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全局安装路径
# 允许设置全局安装包的 bin 文件的目标目录。
pnpm config set global-bin-dir "E:\pnpm-store"
# 包元数据缓存的位置。
pnpm config set cache-dir "E:\pnpm-store\pnpm-cache"
# pnpm 创建的当前仅由更新检查器使用的 pnpm-state.json 文件的目录。
pnpm config set state-dir "E:\pnpm-store\pnpm-state"
# 指定储存全局依赖的目录。
pnpm config set global-dir "E:\pnpm-store\global"
# 所有包被保存在磁盘上的位置。
#(可选,以下这条命令可以选择不执行也是OK的)
pnpm config set store-dir "E:\pnpm-store\pnpm-store"
纸鹿大佬的建议
2024-08-21 13:39:30
纸鹿
使用 npm 安装 pnpm 后,建议重新通过 pnpm 安装 pnpm,再将 npm 安装的 pnpm 卸载掉。
纸鹿
npm install -g pnpm
纸鹿
pnpm setup
纸鹿
pnpm add -g pnpm
纸鹿
npm remove -g npm
评论区
评论加载中...