pnpm的安装和使用(全网最详细)
pnpm 是一款磁盘空间高效的软件包管理器。 当使用 npm 或 Yarn 时,如果你有 1000个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而,如果是使用 pnpm,依赖包将被存放在一个统一的位置,因此以项目和依赖包的比例来看,使用 pnpm 将节省大量的硬盘空间,并且安装速度也能大大提高,目前,pnpm 已发布 6.8.0 版本,此版本包含许多新功能、性能优化以及错误修复,主要更新内容如下:
- pnpm 号称是同类工具速度的将近 2 倍
- node_modules 中的所有文件均链接自单一存储位置
- pnpm 内置了对单个源码仓库中包含多个软件包的支持
- pnpm 创建的 node_modules 并非扁平结构,因此代码不能对任意软件包进行访问
- pnpm:官网传送门https://pnpm.io/zh/motivation
一、先安装
Node环境(✔️) npm环境(✔️)
二、安装pnpm
npm install -g pnpm
1
设置镜像源
pnpm config set registry https://registry.npm.taobao.org/
# 检查
pnpm config get registry
# 允许设置全局安装包的 bin 文件的目标目录。
pnpm config set global-bin-dir "D:\dev\pnpm-store"
# 包元数据缓存的位置。
pnpm config set cache-dir "D:\dev\pnpm-store\pnpm-cache"
# pnpm 创建的当前仅由更新检查器使用的 pnpm-state.json 文件的目录。
pnpm config set state-dir "D:\dev\pnpm-store\pnpm-state"
# 指定储存全局依赖的目录。
pnpm config set global-dir "D:\dev\pnpm-store\global"
# 所有包被保存在磁盘上的位置。
#(可选,以下这条命令可以选择不执行也是OK的)
pnpm config set store-dir "D:\dev\pnpm-store\pnpm-store"
pnpm config set global-bin-dir "D:\dev\pnpm-store"
pnpm config set cache-dir "D:\dev\pnpm-store\pnpm-cache"
pnpm config set state-dir "D:\dev\pnpm-store\pnpm-state"
pnpm config set global-dir "D:\dev\pnpm-store\global"
pnpm config set store-dir "D:\dev\pnpm-store\pnpm-store"
常用命令
# 查看ts-node的所有版本
pnpm view ts-node versions
# 等价与npm i nodemon -g
pnpm add nodemon -g
# npm i
pnpm i
# 查看依赖(全局)
pnpm list [-g]
# 较好用的地方是: npm run dev/test/build
pnpm dev
# 当然习惯npm的也可以用 pnpm run dev
三、PNPM + VITE 从外网迁移到内网环境开发
离线安装pnpm 在有外网的机器上执行以下命令,下载pnpm的tgz压缩包至桌面,注意下载版本和当前使用版本保持一致 npm pack -g pnpm@7.4.0 --pack-destination ~/Desktop 或者(E:\IdeaProjects)
将tgz压缩包拷贝至离线机器在离线机器中执行命令 npm -g i /home/user/offline/pnpm-7.4.0.tgz
复制整个项目代码,重点是node_modules和pnpm-lock.yaml复制.pnpm-store文件夹,该文件夹位置在项目代码同级根目录下。例如项目代码在E:/project/project1。E:/.pnpm-store。注意该文件夹为隐藏文件夹,并且该文件夹要在pnpm install后才会出现。将这两个文件夹复制到内网相同目录下。例如都复制到E盘下,不要改目录结构进入C:\Users\Admin\AppData\Local\。复制pnpm-cache文件夹至内网相同目录下。用户名目录可能不一致。注意AppData文件夹为隐藏文件夹。进入内网E盘下的项目代码目录,打开命令行工具,执行pnpm install命令,等待执行完成。如果pnpm install执行报错也不要紧,继续执行pnpm dev如果提示vite命令不存在,可以看下node_modules/.bin文件夹下是否有vite.CMD。如果没有,重新从外网环境中拷贝一份即可。
离线安装“新”依赖(windows)
迁移完毕后,如果现有项目需要一个新的依赖包,又在离线的情况下,可以先去node_modules/.pnpm/node_modules文件夹下去查看,已安装依赖中,有没有添加该依赖,如果有可以直接在项目中引用因为pnpm的原理是,如果有项目/依赖都是用了该依赖,那么该依赖包只安装一次,然后在项目中对其添加一个符号链接文件夹(软连接)按照这个原理,我们就可以先查看一下添加该依赖的项目中的软连接地址。比如已安装该依赖的项目是A,需要添加的项目是B,该依赖为C,执行一下命令。
dir /al E:\B\node_modules\A\node_modules
输出 2024/01/09 14:36 C [E:\B\node_modules.pnpm\A\node_modules\C]
在B项目的node_modules目录下执行添加软连接的命令,即可在B项目下正常使用C依赖。
mklink /j C E:\B\node_modules\.pnpm\A\node_modules\C