跳至主要内容
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

常见问题

本文档仍在完善中。

如何向 Lerna 仓库添加第三方依赖?

Lerna 不负责添加或链接依赖项,这是您选择的包管理器(npm/yarn/pnpm)的专长。通过使用包管理器的 workspaces 功能,所有本地包的链接将根据您在 package.json 文件中设置的依赖关系自动完成。

您可以在此查看各包管理器的 workspaces 文档:

注意:由于 Lerna 本身早于包管理器的 workspaces 功能,历史上曾有几个命令(addbootstraplink)试图填补这一空白。幸运的是,这些命令现已不再需要,Lerna 可以专注于其核心功能,同时让包管理器各司其职。

在 Lerna 仓库中创建新包

您可以使用 lerna create 命令在 Lerna 仓库中创建新包。

lerna create <packageName>

更多选项请参阅创建文档

如果不愿使用 lerna create,您仍可在 packages 子目录中手动运行 npm init 创建包,Lerna 会自动检测到它。

导入现有包

您可以使用 lerna import <package> 将现有包迁移到 Lerna 仓库,该命令会保留提交历史。

lerna import <package> 需要本地路径而非 URL。因此您需要将目标仓库保存在文件系统中。

publish 失败时如何重试?

若部分包发布成功而部分失败,lerna publish 可能使仓库处于不一致状态(存在未提交变更)。恢复时请重置失败运行产生的变更,使工作区恢复清洁状态,然后重试相同的 lerna publish 命令。Lerna 会重新尝试发布所有包,但会识别已成功发布的包并跳过它们(同时给出警告)。

若您未使用位置参数指定新版本号(即由 Lerna 自动选择版本),可运行 lerna publish from-git 重新发布已标记的相同版本,无需在重试时再次升级版本号。

Lerna 如何检测包?

对于 npmyarn,Lerna 默认通过 package.json 中配置的 workspaces 属性确定操作范围。该属性的详细信息请参阅 npm 文档yarn 文档

如果你正在使用 pnpm,可能已在 lerna.json 中将 npmClient 设置为 pnpm。此时,Lerna 将读取 pnpm-workspace.yaml 文件中的 packages 属性来确定要操作的包。有关该属性的详细信息,请参阅 pnpm 文档

若希望 Lerna 专注于仓库中的特定子集包,可利用 lerna.json 中的 packages 属性进行包搜索。