跳至主要内容

在 Lerna 中使用 pnpm

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Lerna 可以在 pnpm 工作区中使用,从而充分发挥 pnpm 和 Lerna 的双重优势。

当在 pnpm 工作区中使用时,Lerna 将:

  • 通过 pnpm-workspace.yaml 解析包位置 (https://pnpm.io/workspaces)

  • 忽略 package.json 中的 "workspaces" 配置

  • 禁用 bootstraplinkadd 命令。你应直接使用 pnpm 命令管理依赖项 (https://pnpm.io/cli/install)

  • 遵循包依赖的 workspace 协议

    • 执行 lerna version 时会正常更新依赖,但保留已有的 workspace: 前缀
    • 若使用 workspace 别名lerna version 不会更新依赖版本号,因为别名不包含具体版本

开始使用

配置 pnpm 与 Lerna 协作:

  1. 若未安装,请先安装 pnpmhttps://pnpm.io/installation

  2. 删除根目录下的 node_modules/ 文件夹(若存在)。若未启用工作区,请运行 lerna clean 清除所有包内的 node_modules/

  3. lerna.json 中设置 "npmClient": "pnpm"

  4. 在项目根目录创建 pnpm-workspace.yaml 文件 若已使用 npm 或 yarn 工作区,请将 package.json 中的 "workspaces" 属性移至 pnpm-workspace.yaml。若未使用工作区,则将 lerna.json 中的 "packages" 属性移至 pnpm-workspace.yaml。例如:

    package.json
    {
    "workspaces": ["packages/*"]
    }

    lerna.json
    {
    "packages": ["packages/*"]
    }

    应改为:

    pnpm-workspace.yaml
    packages:
    - "packages/*"
  5. (可选) 运行 pnpm import 从现有 lockfile 生成 pnpm-lock.yaml。支持的文件格式详见:https://pnpm.io/cli/import

  6. 运行 pnpm install