什么是 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