pnpm使用介绍
介绍
一般前端项目使用npm做包管理,下载依赖包到项目node_modules文件夹下。
但是发现一个基础项目node_modules文件夹就有几百兆,每个项目都要下载一次,太占硬盘。
pnpm可以解决这个问题,它下载依赖的时候下载到全局文件夹,然后通过硬链接的方式关联到项目node_modules文件夹下。
但是具体配置还挺多的,网上教程也不够详细,这里总结一下配置和使用方法万一有写的不对,欢迎指正。
安装
npm install -g pnpm
先全局安装pnpm
然后打开下面文件,没有就创建
C:\Users\用户名\.npmrc
registry=https://registry.npmmirror.com/
global-bin-dir=D:\greensoft\IDE\pnpm_modules_repo
cache-dir=D:\greensoft\IDE\pnpm_modules_repo\cache
state-dir=D:\greensoft\IDE\pnpm_modules_repo\state
global-dir=D:\greensoft\IDE\pnpm_modules_repo\global
#proxy=http://127.0.0.1:2334
#https-proxy=http://127.0.0.1:2334
shared-workspace-shrinkwrap = true
store-dir = D:\greensoft\IDE\pnpm_modules_repo\store
配置一个镜像源
自定义相关路径
依赖包安装位置store-dir
全局依赖包global-dir
遇到下载不下来的包,比如electron可以配置代理,这里注释了
之后将D:\greensoft\IDE\pnpm_modules_repo 写入环境变量PNPM_HOME。
%PNPM_HOME%写入PATH
以上路径不自定义的话,会默认安装在C盘用户AppData\Local目录下,很占空间。
以上配置好以后,如果是idea的话都知道配置的环境变量是不立刻生效的。
之前有博客文章写过怎么改idea的环境变量,但是今天又发现一个坑。
idea修改增加环境变量很容易改错,改错了反过来还会影响系统环境变量。
所以最好系统环境变量改好以后,完整替换粘贴到idea里。
使用
已有项目删除node_modules目录,执行pnpm install重新安装依赖。 就会下载全局依赖然后硬链接关联到node_modules目录。
注意硬链接在查看node_modules文件夹大小的时候看起来还是很大,其实是重复计算的问题,并不是实际占用。
pnpm install 下载的依赖包是在定义store-dir的路径下,看起来这个路径里文件夹像是缓存一样不规则的名字而不是依赖包包名。这是无所谓的。
pnpm add -g sax 安装全局依赖包,是在global-dir路径下。我一开始搞不懂全局依赖包和缓存依赖包到store-dir有什么区别。chatgpt解释是,全局依赖包等于安装一些需要的命令行工具,是任何地方都可以用的,并不是用于传统意义上的vue依赖库。
如果理解错误,欢迎指正。chatgpt误导也很多不能全信。
参考文献
pnpm中文网,可以看各种相关命令
https://www.pnpm.cn/motivation
有些概念的进一步解释
https://juejin.cn/post/7124142007659790372
安装过程主要参考下面这篇文章
https://juejin.cn/post/7158295493812944904
pnpm硬链接的机制
https://www.cnblogs.com/goloving/p/16206624.html