pnpm简介

前言

pnpm近两年盛行起来,很多公司及开源项目纷纷转向pnpm,那么它究竟有什么魔力呢?

一、什么是pnpm

快速的,节省磁盘空间的包管理工具。

二、pnpm的特点

1、快速

pnpm比其他包管理器快2倍。

2、高效

node_modules 中的文件为复制或链接自特定的内容寻址存储库。

3、支持monorepos

pnpm内置支持单仓多包。

4、严格

pnpm 默认创建了一个非平铺的 node_modules,因此代码无法访问任意包。

三、pnpm到底做了什么

1、当使用npm或yarn时,如果你有100个项目,并且所有项目都有一个相同的依赖包,那么,你在硬盘上就需要保存100份该相同依赖包的副本。
2、如果是使用pnpm,依赖包将被存放在一个统一的位置,因此:
  • 如果你对同一依赖包使用相同的版本,那么磁盘上只有这个依赖包的一份文件;
  • 如果你对同一依赖包需要使用不同的版本,则仅有版本之间不同的文件会被存储起来;
  • 所有文件都保存在硬盘的统一的位置:
  • 当安装软件包时,其包含的所有文件都会硬链接到此位置,而不会占用而外的硬盘空间;
  • 这让你可以在项目之间方便地共享相同版本的依赖包。

四、pnpm创建非平铺的node_modules目录

1、npm和yarn
  • 当使用npm或yarn安装依赖包时,所以软件包都被提升到node_modules的根目录下;
  • 其结果是,源码可以访问本不属于当前项目所设定的依赖包。
2、pnpm
  • 使用pnpm安装依赖包时,只有安装的那个包会在node_modules的根目录下,并且以软链接(符号链接)的方式存在;
  • 在node_modules的根目录下同时还会有一个.pnpm文件,里面保存的是所有包的硬链接;
  • 其结果是,源码不可以访问本不属于当前项目所设定的依赖包。

五、npm与pnpm命令对比

npm命令 pnpm等价命令
npm install pnpm install
npm install 包名 pnpm add 包名
npm uninstall 包名 pnpm remove 包名
npm run 脚本 pnpm 脚本

六、pnpm常用命令

pnpm store path  // 获取包仓库地址(pnpm的仓库不能跨磁盘)
pnpm store prune  // 从store中删除当前未被引用的包来释放store的空间

结语

文中对于软链接和硬链接等概念(操作系统里面的概念)并没有过多解释,但是这些概念对于理解pnpm的特点却又至关重要,建议先去了解一下。
想要了解更多,请移步官网:pnpm中文官网链接

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容