Monorepo使用lerna和部署机器人发布

时间:2017-11-16 10:58:41

标签: continuous-integration yarnpkg lerna

以下是该方案:

我们想要一个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/*"
  ]
}

的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"
  }
}

2 个答案:

答案 0 :(得分:3)

对于任何需要此功能的人来说,看起来他们正在为v3.0工作:

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

答案 1 :(得分:2)

我在同一条船上。该功能不存在。理想情况下,Lerna会有一个你可以传递的参数来跳过版本号。你最好在Github的项目中制造一些噪音:https://github.com/lerna/lerna/issues