pnpm的安装与使用

官网:安装 | pnpm中文文档 | pnpm中文网

一、pnpm优势:

1.节省磁盘空间

假设你有一个依赖包 example-package,包含 100 个文件。如果你使用 npm 安装在 100 个项目中,你的硬盘上会有 100 份 example-package,每份都占用同样的空间。

然而,如果是使用 pnpm,

(1)example-package 的所有文件会被存放在全局存储位置。

(2)当你在一个项目中安装 example-package 时,pnpm 会创建指向全局存储中该包的硬链接。

(3)如果 example-package 发布了一个新版本,且只有一个文件有改动,pnpm 只会在全局存储中添加那个改动的文件,而不是重新保存所有文件。

2.提升安装速度

安装步骤

(1)解析依赖:确定项目所需的依赖包。这个过程包括读取项目的 package.json 文件,解析其中列出的依赖包及其版本信息,并确定所有需要安装的包及其依赖关系。

(2)检查全局存储:检查全局存储位置中是否已有这些依赖包。如果如果没有,下载并存储到全局位置。如果有,跳过下载步骤。

(3)硬链接:将所有依赖包硬链接到项目的 node_modules 目录

二、下载和使用

1.下载和配置环境

bash 复制代码
npm install -g pnpm

以下列表列出了以往的 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 ✔️ ✔️ ✔️
bash 复制代码
#检查是否安装成功
pnpm --version

如果显示没有pnpm这个命令,要配置一下系统的环境变量。由于是全局安装的pnpm,所以可以在npm的全局安装路径找到。提示:官网没给出解决方案,我的是出问题了,chatgpt问出来的。

bash 复制代码
$ npm config get prefix
D:\GlobalNodeModules

然后再系统环境变量中的path新增D:\GlobalNodeModules

设置好后,可能需要关机重启。

2.设置源

bash 复制代码
//查看源
pnpm config get registry 
//切换淘宝源
pnpm config set registry http://registry.npm.taobao.org 

3.设置 pnpm 存储路径

bash 复制代码
#查看存储路径,默认是C:\Users\10938\AppData\Local\pnpm\store\v3
pnpm store path

#修改(官网:pnpm config set store-dir /path/to/.pnpm-store)
pnpm config set store-dir  D:/pnpm/.pnpm-store

4.基本命令

bash 复制代码
#1.安装依赖
pnpm install

#2.安装特定包
pnpm add <package>
#全局安装特定包
pnpm add -g <package>

#3.移除依赖 
pnpm remove <package>
pnpm remove <package> --global

#4.更新依赖
pnpm up   //更新所有依赖项
pnpm update <package>
pnpm update <package> --global

#5.检查过时的依赖
pnpm outdated

#6.运行脚本
pnpm run <script>

#7.查看配置
pnpm config get <key>

#8.设置配置
pnpm config set <key> <value>

#9.查看包信息
pnpm info <package>

#10.链接全局包
pnpm link <package>

#11.取消链接全局包
pnpm unlink <package>
相关推荐
前端百草阁5 分钟前
【TS简单上手,快速入门教程】————适合零基础
javascript·typescript
彭世瑜6 分钟前
ts: TypeScript跳过检查/忽略类型检查
前端·javascript·typescript
FØund4046 分钟前
antd form.setFieldsValue问题总结
前端·react.js·typescript·html
Backstroke fish7 分钟前
Token刷新机制
前端·javascript·vue.js·typescript·vue
小曲程序8 分钟前
vue3 封装request请求
java·前端·typescript·vue
临枫5419 分钟前
Nuxt3封装网络请求 useFetch & $fetch
前端·javascript·vue.js·typescript
RAY_CHEN.10 分钟前
vue3 pinia 中actions修改状态不生效
vue.js·typescript·npm
酷酷的威朗普10 分钟前
医院绩效考核系统
javascript·css·vue.js·typescript·node.js·echarts·html5
小张不爱写代码10 分钟前
CocosCreator 音效管理器
typescript
小刺猬_98511 分钟前
(超详细)数组方法 ——— splice( )
前端·javascript·typescript