我可以为lerna monorepo中的所有子软件包管理相同版本吗?

时间:2019-05-01 18:51:10

标签: angular version-control yarnpkg lerna monorepo

my-lerna-repo/
package.json
packages/
    package-1/
        package.json
    package-2/
        package.json
            dependencies: {
                package-1
            }

我想为所有子软件包保持一致的版本。另外,子包中有交叉依赖项。

我想实现与角度相似的效果。

https://github.com/angular/angular

他们仅在根级别管理软件包版本,并在所有子软件包中提及0.0.0-PLACEHOLDER。构建时会从根包中选择版本。

请告诉我是否有任何现有方法可以执行此操作,或者我需要编写自己的自定义脚本。

3 个答案:

答案 0 :(得分:0)

Lerna正是Fixed/Locked mode的工作,这是Lerna项目的默认设置。

  

固定模式Lerna项目在单个版本行上运行。版本保存在项目根目录下版本密钥下的lerna.json文件中。当您运行lerna publish时,如果某个模块自上次发布以来已被更新,它将被更新为您要发布的新版本。这意味着您仅在需要时才发布软件包的新版本。

答案 1 :(得分:0)

您可以使用--force-publish来确保所有软件包都发布在同一版本下。

答案 2 :(得分:0)

根据 Lerna 文档,如果您想在同一版本下发布所有包,您需要使用零 (0) 作为 lenra.json 文件中的主要 Lerna 版本。

<块引用>

注意:如果您的主要版本为零,则所有更新都被视为中断。因此,运行主版本为零的 lerna publish 并选择任何非预发布版本号将导致为所有包发布新版本,即使自上次发布以来并非所有包都已更改。

这是 Babel 当前使用的模式。如果您想自动将所有软件包版本绑定在一起,请使用此选项。这种方法的一个问题是,任何包的重大更改都会导致所有包都有一个新的主要版本。

示例:“0”或“0.1.0”

{
  "packages": [
    "packages/*"
  ],
  "useWorkspaces": true,
  "npmClient": "yarn",
  "version": "0"
}