使用lerna和deploy bot进行Monorepo发布

Jak*_*nge 3 continuous-integration lerna yarnpkg

这是场景:

我们想要一个用于几个组件的monorepo,并希望将lerna与纱线工作区一起使用。

为了确保语义版本控制不会发生任何问题,最好对版本号进行代码审查。因此,package.json定义了一个version-bump脚本,该脚本只能用于增加软件包的版本。

在测试运行并且CR正常后,我们希望部署机器人将软件包发布给我们的自定义注册表。为此,最好使用lerna publish --skip-git,以便lerna仅发布更改的软件包。

这里的问题是,不仅lerna publish会发布软件包,还会再次要求它们增加版本。知道在不增加版本的情况下发布选项或解决方法会很高兴。

我们当前的解决方法是使用lerna exec npm publish,但这将尝试再次发布已经发布的软件包。我们也无法使用,lerna exec yarn publish因为在这种情况下yarn要求版本增加。

设置如下所示:

lerna.json:

{
  "lerna": "2.5.1",
  "version": "independent",
  "npmClient": "yarn",
  "useWorkspaces": true,
  "packages": [
    "packages/*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

package.json

{
  "name": "…",
  "version": "0.0.0",
  "description": "…",
  "main": "index.js",
  "repository": {
    "type": "git",
    "url": "…"
  },
  "workspaces": [
    "packages/*"
  ],
  "private": true,
  "scripts": {
    "version-bump": "./node_modules/lerna/bin/lerna.js publish --skip-npm",
    "test": "echo well tested"
  },
  "devDependencies": {
    "lerna": "^2.5.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

对于需要此功能的任何人,似乎他们正在为v3.0进行开发:

单独的“版本”和“发布”命令-https: //github.com/lerna/lerna/issues/961