Lerna的使用及报错问题分析解决

Lerna 是 JavaScript/TypeScript 的原始单体库工具。它已经存在多年,被成千上万的项目使用,包括 React 和 Jest。Lerna 解决了 JavaScript/TypeScript 单体库的两个最大问题:

  1. 多项目命令运行:Lerna 可以针对任意数量的项目运行命令,并且以最高效、正确的顺序执行,还可以在多台机器上分布执行。

  2. 发布流程管理:Lerna 管理从版本控制到发布到 NPM 的整个发布流程,并提供多种选项,确保适应任何工作流程。

Lerna 的优点:

  1. 高效执行任务:Lerna 可以以最高效、正确的顺序并行运行任意数量的项目命令,还可以在多台机器上分布执行。

  2. 多包发布:无论包是否具有独立的版本,Lerna 都可以轻松地将多个包发布到 npm。

  3. 理想的开发体验:使用 Lerna,你可以在同一代码库中开发多个包,共享代码,明确所有权,并获得快速统一的 CI。

Lerna 的使用:

以下是使用 Lerna 的步骤:

  1. 初始化项目 Lerna:在项目根目录中运行以下命令:

    npx lerna init

    会创建一个名为 lerna.json 的配置文件。

  2. 配置工作区:要确保项目根目录的 package.json 文件中已经配置了 workspaces :

    {
      "private": true,
      "workspaces": ["packages/*"]
    }

    这里的 "packages/*" 表示你的工作区中的包都在 packages 文件夹下。

  3. 运行 Lerna 命令:现在你可以运行其他 Lerna 命令,例如安装依赖、发布等。

常见问题:

  1. lerna publish 报错:

    lerna notice cli v3.22.1
    lerna ERR! ENOLERNA `lerna.json` does not exist, have you run `lerna init`?
    error Command failed with exit code 1.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

    这是因为没有初始化 Lerna,和上面讲到的一样,执行命令:

    npx lerna init
  2. lerna init 报错:

    lerna notice cli v8.1.2
    lerna ERR! Cannot initialize lerna because your package manager has not been configured to use `workspaces`, and you have not explicitly specified any packages to operate on
    lerna ERR! See https://lerna.js.org/docs/getting-started#adding-lerna-to-an-existing-repo for how to resolve this

    这是因为项目根目录的 package.json 文件中已经配置了 workspaces ,在 package.json 文件中添加如下配置:

    {
      "private": true,
      "workspaces": ["packages/*"]
    }

未经允许不得转载:前端资源网 - w3h5 » Lerna的使用及报错问题分析解决

赞 (0)
分享到: +

评论 沙发

Avatar

换个身份

  • 昵称 (必填)
  • 邮箱 (选填)