pnpm workspace的常用命令

6,737 阅读1分钟

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