什么是 pnpm?

pnpm 是新一代的包管理工具,号称是最先进的包管理器。按照官网说法,可以实现节约磁盘空间并提升安装速度创建非扁平化的 node_modules 文件夹两大目标,具体原理可以参考 pnpm 官网

如何使用pnpm?

全局安装pnpm

 1npm install -g pnpm

menorepo工程项目结构

 1packages
 2    pkg1
 3        package.json
 4    pkg2
 5        package.json
 6package.json
 7pnpm-workspace.yaml

其中 packages 为工作区目录,里面可创建多个项目,项目里面需包含package.json文件,package.json里的name为项目名需要必填

 1packages
 2    pkg1
 3        package.json
 4    pkg2
 5        package.json
 6package.json
 7pnpm-workspace.yaml

pnpm-workspace.yaml可以自定义工作区目录,默认为packages下的所有子目录。

 1// pnpm-workspace.yaml
 2packages:
 3    // packages目录下的所有子目录
 4    - 'packages/*'
 5    // components目录下的所有子目录
 6    - 'components/*'
 7    // 排除test目录下的包
 8    - '!**/test/**'

为所有包安装依赖

 1pnpm install

安装全局的公共依赖包

pnpm 提供了 -w, —workspace-root 参数,可以将依赖包安装到工程的根目录下,作为所有 package 的公共依赖。

 1pnpm add react -w

如果是一个开发依赖的话,可以加上 -D 参数,表示这是一个开发依赖,会装到 pacakage.json 中的 devDependencies 中,比如:

 1pnpm add react -wD

给某个package单独安装指定依赖

pnpm 提供了 —filter 参数,可以用来对特定的package进行某些操作。

 1pnpm add react --filter pkg1(项目名)

需要注意的是,--filter 参数跟着的是package下的 package.json 的 name 字段,并不是目录名。

也可进入到对应项目下执行以下代码

 1// packages/pkg1
 2pnpm add react

模块之间相互安装依赖

将package下的pkg1包安装到pkg2中

 1pnpm add pkg1 --filter pkg2 --workspace
个人笔记记录 2021 ~ 2025