跳到主要内容

常见问题

本文档仍在持续完善中。

如何在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发布可能会使仓库处于不一致的状态,并有一些已更改的文件。要从这种情况恢复,请重置失败运行中的任何额外本地更改,以返回到干净的工作树。然后,重试相同的Lerna发布命令。Lerna将尝试再次发布所有包,但会识别已发布的包并跳过它们,并显示警告。

如果您使用不带位置参数的Lerna发布命令来为包选择新版本,则可以运行lerna publish from-git以重试发布已标记的相同版本,而不必再次bump版本。

Lerna如何检测包?

默认情况下,对于npmyarn,Lerna使用package.json中配置的workspaces属性来确定要操作的包。有关此属性的详细信息,请参见npm文档yarn文档

如果您使用pnpm,并在lerna.json中将npmClient设置为pnpm,那么Lerna将使用pnpm-workspace.yaml中的packages属性来确定要操作的包。有关此属性的详细信息,请参见pnpm文档

如果您希望Lerna专注于仓库中特定的包子集,可以利用lerna.json中的packages属性来搜索包。