本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
常见问题
本文档仍在完善中。
如何向 Lerna 仓库添加第三方依赖?
Lerna 不负责添加或链接依赖项,这是您选择的包管理器(npm/yarn/pnpm)的专长。通过使用包管理器的 workspaces 功能,所有本地包的链接将根据您在 package.json 文件中设置的依赖关系自动完成。
您可以在此查看各包管理器的 workspaces 文档:
-
pnpm(https://pnpm.io/workspaces)
注意:由于 Lerna 本身早于包管理器的 workspaces 功能,历史上曾有几个命令(add、bootstrap 和 link)试图填补这一空白。幸运的是,这些命令现已不再需要,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 如何检测包?
对于 npm 和 yarn,Lerna 默认通过 package.json 中配置的 workspaces 属性确定操作范围。该属性的详细信息请参阅 npm 文档 或 yarn 文档。
如果你正在使用 pnpm,可能已在 lerna.json 中将 npmClient 设置为 pnpm。此时,Lerna 将读取 pnpm-workspace.yaml 文件中的 packages 属性来确定要操作的包。有关该属性的详细信息,请参阅 pnpm 文档。
若希望 Lerna 专注于仓库中的特定子集包,可利用 lerna.json 中的 packages 属性进行包搜索。