跳至主要内容

使用 pnpm 与 Lerna

Lerna 可以用在 pnpm 工作区 中,以获得 pnpm 和 Lerna 的全部优势。

pnpm 工作区中使用时,Lerna 将

  • 使用 pnpm-workspace.yaml 解析包位置 (https://pnpm.npmjs.net.cn/workspaces)
  • 忽略 package.json 中的 "workspaces"
  • 阻止使用 bootstraplinkadd 命令。相反,您应该直接使用 pnpm 命令来管理依赖项 (https://pnpm.npmjs.net.cn/cli/install)。
  • 尊重用于包依赖项的 工作区协议
    • lerna version 期间,依赖项将像往常一样更新,但如果存在,则会保留 workspace: 前缀。
    • 如果使用了 工作区别名,则 lerna version 不会提升依赖项的版本,因为别名未指定要提升的版本号。

入门

使用 pnpm 设置 Lerna

  1. 如果尚未安装,请安装 pnpmhttps://pnpm.npmjs.net.cn/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.npmjs.net.cn/cli/import

  6. 运行 pnpm install