跳到主要内容

实用工具

Lerna 提供了一些实用函数,可用于在 Lerna monorepo 中创建自己的工具。

const utils = require("lerna/utils");

detectProjects()

detectProjects() 函数创建与 Lerna 在内部执行其命令时使用的相同的项目图文件映射。这对于编写需要操作 Lerna 将处理的相同包集的自定义脚本很有用。如果需要使用不同的工作空间根目录,可以为函数传递一个自定义工作目录参数。

const path = require("path");
const { detectProjects } = require("lerna/utils");

const { projectGraph, projectFileMap } = await detectProjects();
const { projectGraph, projectFileMap } = await detectProjects(path.resolve("./custom-workspace-root"));

返回的 projectGraph 将是 ProjectGraphWithPackages,它是来自 @nx/devkitProjectGraph 类型的扩展。它包含有关具有 package.json 文件的项目的其他元数据。它还有一个 localPackageDependencies 属性,用于跟踪项目之间的内部 npm 依赖(与从注册表下载的外部 npm 依赖相对)。

projectFileMap 是项目名称到其中文件的映射。这用于确定在文件更改时需要版本化哪个项目。

有关具体类型详细信息,请参见 Lerna 的 TypeScript 源代码