什么是 pnpm?
pnpm 是新一代的包管理工具,号称是最先进的包管理器。按照官网说法,可以实现节约磁盘空间并提升安装速度和创建非扁平化的 node_modules 文件夹两大目标,具体原理可以参考 pnpm 官网。
如何使用pnpm?
全局安装pnpm
npm install -g pnpm
menorepo工程项目结构
packages
pkg1
package.json
pkg2
package.json
package.json
pnpm-workspace.yaml
其中 packages 为工作区目录,里面可创建多个项目,项目里面需包含package.json文件,package.json里的name为项目名需要必填
packages
pkg1
package.json
pkg2
package.json
package.json
pnpm-workspace.yaml
pnpm-workspace.yaml可以自定义工作区目录,默认为packages下的所有子目录。
// pnpm-workspace.yaml
packages:
// packages目录下的所有子目录
- 'packages/*'
// components目录下的所有子目录
- 'components/*'
// 排除test目录下的包
- '!**/test/**'
为所有包安装依赖
pnpm install
安装全局的公共依赖包
pnpm 提供了 -w, --workspace-root 参数,可以将依赖包安装到工程的根目录下,作为所有 package 的公共依赖。
pnpm add react -w
如果是一个开发依赖的话,可以加上 -D 参数,表示这是一个开发依赖,会装到 pacakage.json 中的 devDependencies 中,比如:
pnpm add react -wD
给某个package单独安装指定依赖
pnpm 提供了 --filter 参数,可以用来对特定的package进行某些操作。
pnpm add react --filter pkg1(项目名)
需要注意的是,--filter 参数跟着的是package下的 package.json 的 name 字段,并不是目录名。
也可进入到对应项目下执行以下代码
// packages/pkg1
pnpm add react
模块之间相互安装依赖
将package下的pkg1包安装到pkg2中
pnpm add pkg1 --filter pkg2