介绍
官网
节约磁盘空间
在使用npm时,如果你有100个项目使用了一个依赖项,那么你将在磁盘上保存该依赖项的100份副本。而使用pnpm时,依赖项将被存储在一个内容可寻址的存储库中,因此:
- 如果你依赖于不同版本的依赖项,只有不同的文件会被添加到存储库中。例如,如果它有100个文件,而新版本只有一个文件发生了更改,pnpm更新只会将1个新文件添加到存储库中,而不是为了单个更改而克隆整个依赖项。
- 所有文件都保存在磁盘上的一个地方。当安装包时,它们的文件会从那个地方硬链接过来,不消耗额外的磁盘空间。这使得你可以在不同项目之间共享相同版本的依赖项。
因此,根据项目和依赖项的数量,你会在磁盘上节省大量空间,并且安装速度会快很多!
提高安装速度
pnpm 的安装过程分为三个阶段:
- 依赖解析:识别并获取所有需要的依赖项到存储库中。
- 目录结构计算:基于这些依赖项,计算 node_modules 的目录结构。
- 链接依赖项:从存储库中获取所有剩余的依赖项,并通过硬链接的方式将它们链接到 node_modules 中。
这种方法比传统的三阶段安装过程(解析、获取并将所有依赖项写入 node_modules)要快得多。
创建一个非扁平化的 node_modules 目录结构
在使用 npm 或 Yarn Classic 安装依赖项时,所有包都会被提升到模块目录的根目录下。因此,源代码可以访问那些未被添加为项目依赖的依赖项。
默认情况下,pnpm 使用符号链接仅将项目的直接依赖项添加到模块目录的根目录中。
安装pnpm
安装方式有很多,我使用npm安装。运行命令npm install -g pnpm
运行pnpm --version
查看版本号:
配置pnpm
pnpm全局配置文件
pnpm 配置文件是INI
格式的。
对于windows系统, pnpm全局配置文件在如下目录下面:
~/AppData/Local/pnpm/config/rc
例如我的在如下目录:
备注:开始没有这个文件,执行配置命令,写入一条配置,这个文件就自动生成了。例如我执行
pnpm config set store-dir D:\pnpm_store\store
然后就自动生成了这个文件
配置
执行命令pnpm config set store-dir <new_path>
,例如pnpm config set store-dir D:\pnpm_store\store
:
除了使用配置命令以外,还可以打开rc文件,直接修改:
# 基本目录,可执行文件目录
global-bin-dir=D:\pnpm_store
# 全局包目录
global-dir=D:\pnpm_store\global
# 缓存目录
cache-dir=D:\pnpm_store\cache
# 状态文件目录
state-dir=D:\pnpm_store\state
# 依赖包文件目录
store-dir=D:\pnpm_store\store
使用示例
pnpm init
创建一个package.json文件,例如:
生成的package.json文件:
pnpm add <pkg>
安装一个包及其所有依赖的包。默认情况下,任何新包都作为生产依赖项安装。
例如,执行pnpm add jquery
:
安装完成后,自动更新了package.json文件:
pnpm install
别名:i
pnpm install 用于为项目安装所有依赖项。
例如:
pnpm list
别名:ls
此命令将以树状结构输出所有已安装包的版本及其依赖项。
例如: