我继承了一个 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 中有一些内部私有包被多个应用程序引用。
这里的任何想法将不胜感激
出现此问题的原因是
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"
}