勒纳和纱线工作区安装错误



我在我的项目中实现了 Lerna 和 yarn 工作区,当我要安装软件包时,它说

error Couldn't find package "@kratos/core@^1.0.1" required by "@kratos/storybook@1.0.1" on the "npm" registry.

而这些@kratos/core@kratos/storybook包存在于包文件夹中,它们是本地包。

我尝试了这些命令,但遇到以下错误:

  • lerna add @kratos/core --scope @kratos/renderer:
  • lerna add @kratos/core packages/renderer
lerna notice cli v3.22.0
lerna info versioning independent
lerna notice filter including "@kratos/renderer"
lerna info filter [ '@kratos/renderer' ]
lerna WARN No packages found where @kratos/core can be added. 

Lerna 配置文件:

{
"useWorkspaces": true,
"npmClient": "yarn",
"packages": ["packages/*"],
"version": "independent",
"command": {
"publish": {
"ignoreChanges": [
"test/**/*",
"*.test.*",
"*.spec.*",
"cypress",
"*.md",
"scripts",
"lib",
"tslint.json",
"tsconfig.json"
]
},
"run": {
"npmClient": "yarn"
}
}
}

谢谢,Lerna 在没有有用文档的情况下遇到很多问题。

您需要
  1. 运行lerna bootstrap,以便lerna为node_modules中的所有packages/*创建符号链接。

  2. 如果任何包的本地版本(在@kratos/core中(与您在 package.json 文件中引用的版本不匹配,那么它将尝试从 npm 导入包。这可能就是为什么您看到"在 npm 注册表上找不到包"的原因

我遇到了同样的问题,但它是由其他原因引起的。在我的场景中,我尝试像这样链接一个包:

// package B
"dependencies": {
"@scope/packageA": "*",
}

但是包 A 有一个 package.json,其版本指定为"0.x.0-alpha.1",这导致 Lerna 返回类似的错误:

">

错误找不到与"*"匹配的"@scope/packageA"的任何版本

解决方案:对我们来说,包 A 在任何非预发布版本下都没有发布到我们的 NPM 注册表。因此,解决方案是将包 A 的版本字符串恢复为"0.x.0"(删除"-alpha.1"前缀(,然后重新运行lerna bootstrap命令,它奏效了!

希望这对:)有所帮助

最新更新