在 monorepo 中,在我们的 CI 中使用 Manypkg,由于版本不匹配而失败,但这没有意义

问题描述 投票:0回答:1

我继承了一个 monorepo,它已部署并正在运行,但 CI 一直失败。 这是前端应用程序的摘录

package.json

{
  "name": "@myorg/clientApp",
  "version": "0.1.0",
  "dependencies": {
    "@myorg/auth": "workspace:*",

所以你可以看到它依赖于 monorepo 中的私有包,

auth

这是

package.json
工作区的
auth

{
  "name": "@myorg/auth",
  "version": "0.1.0",

它似乎设置正确,并且在本地构建,并且在生产中,一切看起来都很棒。但 CI 一直在失败。所以我调查了一下,发现一个

manypkg check
步骤失败了,错误如下:

error @myorg/clientApp has a dependency on @myorg/auth@workspace:* but the version of @myorg/auth in the repo is 0.1.0 which is not within range of the depended on version, please update the dependency version

我不明白为什么这是一个错误,因为

clientApp
正在声明工作区中的
*
任何版本的依赖项,对吗? 那么为什么
0.1.0
不在范围内呢?

我打算尝试忽略这个错误,可能有 50 个相同的错误,因为 monorepo 中有一些内部私有包被多个应用程序引用。

这里的任何想法将不胜感激

npm package continuous-integration pnpm
1个回答
0
投票

出现此问题的原因是

workspace:*
引用工作区中具有匹配版本的依赖项,但
@myorg/auth
的当前版本是
0.1.0
,它与通配符范围不直接匹配。
manypkg
检查期望跨内部依赖项具有精确的版本一致性。

更新

@myorg/auth
 的 package.json 中 
@myorg/clientApp
的版本以匹配当前版本 (
0.1.0
)。不要使用
workspace:*
,而是使用
workspace:0.1.0
来实现精确兼容性,确保一致性并通过 CI 检查。

"dependencies": {
  "@myorg/auth": "workspace:0.1.0"
}
© www.soinside.com 2019 - 2024. All rights reserved.