跳至主要内容

常见问题

此文档正在开发中。

如何向我的 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 publish 命令来为包选择新版本,则可以运行 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 属性来搜索包。