1.什么是pnpm
[pnpm] 全称是 “Performant NPM”,即高性能的 npm。具有速度快、节约磁盘空间、支持monorepo、安全性高的特点。
它结合软链接、硬链接与新的依赖组织方式,大大提升了包管理的效率。
同时解决了 “幻影依赖”(node_modules 一级目录下的依赖包,开发者可以直接使用,但依赖包没定义在 package.json 中) 的问题,让包管理更加规范,减少潜在风险发生的可能性。
2.软链接、硬链接
概念
软链接
又称符号链接,它记录的是目标的path,和原文件不是一个文件。像window中的快捷方式,如果原文件被删了,快捷方式也没用了。
硬链接
,与原文件同享同一个内存地址;当原文件被删时,硬链接不会被破坏。
创建方式
Linux系统下:
ln [选项] 源文件 目标文件
选项:
-s:建立软链接文件。如果不加 “-s” 选项,则建立[硬链接]文件;
Window系统下:
mklink [选项] 目标文件 源文件
选项:
/H:建立硬链接文件。如果不加 “/H” 选项,则建立[软链接]文件;
软链接有个箭头的标识
3.pnpm做了什么
使用 npm 时,依赖每次被不同的项目使用,都要重复安装一次。那么pnpm 有什么不同呢,
- 所有依赖会被存储在内容可寻址的仓库中(pnpm store)。
- 当我们项目软件包被被安装时,项目的
node_modules
下有.pnpm
目录以打平结构管理每个版本包的源码内容。然后以硬链接方式指向仓库中的文件地址,而不会占用额外的磁盘空间;这使得我们可以跨项目地共享同一版本的依赖。 - 项目
node_modules
下安装的包结构为树状,以软链接方式将内容指向node_modules/.pnpm
中的包
使用
使用比较简单,使用npm安装后,用pnpm代替npm就可以了,命令与npm、yarn类似;具体参考官网。
安装
npm install -g pnpm
常用命令
pnpm store path // 获取包仓库地址
pnpm store prune // 从store中删除当前未被引用的包来释放store的空间