跳到主要内容

在 Lerna 中使用 pnpm

Lerna 可以在 pnpm 工作空间中使用,以充分利用 pnpm 和 Lerna 的优势。

pnpm 工作空间中使用时,Lerna 将:

  • 使用 pnpm-workspace.yaml 解析包位置(https://pnpm.io/workspaces)
  • 忽略 package.json 中的 "workspaces"
  • 阻止使用 bootstraplinkadd 命令。相反,您应直接使用 pnpm 命令管理依赖(https://pnpm.io/cli/install)。
  • 遵守工作空间协议进行包依赖。
    • lerna version 期间,依赖项将正常更新,但如果存在 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 从现有锁文件生成 pnpm-lock.yaml 文件。支持的锁文件源请参见 https://pnpm.io/cli/import。

  6. 运行 pnpm install