Skip to main content

将 pnpm 与 Lerna 一起使用

¥Using pnpm with Lerna

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

¥Lerna can be used in a pnpm workspace to get the full benefits of both pnpm and Lerna.

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

¥When used in a pnpm workspace, Lerna will:

  • 使用 pnpm-workspace.yaml (https://pnpm.nodejs.cn/workspaces) 解析包的位置

    ¥resolve package locations with pnpm-workspace.yaml (https://pnpm.nodejs.cn/workspaces)

  • 忽略 package.json 中的 "workspaces"

    ¥ignore "workspaces" in package.json

  • 阻止使用 bootstraplinkadd 命令。相反,你应该直接使用 pnpm 命令来管理依赖 (https://pnpm.nodejs.cn/cli/install)。

    ¥block usage of bootstrap, link, and add commands. Instead, you should use pnpm commands directly to manage dependencies (https://pnpm.nodejs.cn/cli/install).

  • 尊重 工作区协议 的包依赖。

    ¥respect the workspace protocol for package dependencies.

    • lerna version 期间,依赖将照常更新,但将保留 workspace: 前缀(如果存在)。

      ¥During lerna version, dependencies will be updated as normal, but will preserve the workspace: prefix if it exists.

    • 如果使用 工作区别名,则 lerna version 将不会更改依赖的版本,因为别名不指定要更改的版本号。

      ¥If a workspace alias is used, then lerna version will not bump the version of the dependency, since aliases don't specify a version number to bump.

入门

¥Getting Started

要使用 Lerna 设置 pnpm:

¥To set up pnpm with Lerna:

  1. 如果尚未安装,请安装 pnpmhttps://pnpm.nodejs.cn/installation

    ¥If not installed already, install pnpm: https://pnpm.nodejs.cn/installation.

  2. 删除根目录中的 node_modules/ 文件夹(如果存在)。如果尚未使用工作区,请运行 lerna clean 以删除所有包中的 node_modules/ 文件夹。

    ¥Remove the node_modules/ folder in the root, if it exists. If not already using workspaces, run lerna clean to remove the node_modules/ folder in all packages.

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

    ¥Set "npmClient": "pnpm" in lerna.json.

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

    ¥Create a pnpm-workspace.yaml file in the root of your project. If you are already using npm or yarn workspaces, move the "workspaces" property from package.json to pnpm-workspace.yaml. If you were not already using workspaces, move the "packages" property from lerna.json to pnpm-workspace.yaml. For example:

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

    ¥and

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

    变得:

    ¥become:

    pnpm-workspace.yaml
    packages:
    - "packages/*"
  5. (可选)运行 pnpm import 以从现有锁定文件生成 pnpm-lock.yaml 文件。请参阅 https://pnpm.nodejs.cn/cli/import 了解受支持的锁定文件源。

    ¥(optional) Run pnpm import to generate a pnpm-lock.yaml file from an existing lockfile. See https://pnpm.nodejs.cn/cli/import for supported lockfile sources.

  6. 运行 pnpm install

    ¥Run pnpm install.