Lerna 在发布新版本时是否会改变依赖版本?

Vin*_*ent 4 npm lerna

packageA如果我有一个带有和的 monorepo packageB,后者依赖于前者。例如,如果我然后运行lerna version major​​,导致的版本号被碰撞,那么 'packageA中对其依赖项的列表是否也会自动碰撞,还是应该手动完成?packageBpackage.json

(我尝试设置一个测试存储库来执行此操作,但后来 Lerna 抱怨它还没有遥控器,所以我希望有使用 Lerna 经验的人知道答案。)

小智 7

为了这个答案,我假设您没有使用传统的提交。如果我认为错误,请随时回复更多细节。

长话短说

是的,如果您运行lerna version major_repo 中的所有软件包都将更新为新的主要版本,并且的package.json文件packageB将使用packageA.

细节

假设您的 monorepo 中有您的packageA和软件包,并且它们的文件如下所示:packageBpackage.json

# packageA/package.json
{
  "name": "packageA",
  "version": "1.0.0,"
}
Run Code Online (Sandbox Code Playgroud)
# packageB/package.json
{
  "name": "packageB",
  "version": "1.0.0",
  "dependencies": {
    "packageA": "^1.0.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

当您运行 lerna version Major 时:

  • version中的字段将packageA/package.json更新为2.0.0
  • version中的字段将packageB/package.json更新为2.0.0
  • dependencies.packageA中的字段将packageB/package.json更新为^2.0.0
# packageA/package.json
{
  "name": "packageA",
  "version": "2.0.0,"
}
Run Code Online (Sandbox Code Playgroud)
# packageB/package.json
{
  "name": "packageB",
  "version": "2.0.0",
  "dependencies": {
    "packageA": "^2.0.0"
  }
}
Run Code Online (Sandbox Code Playgroud)