使用 Lerna 和部署机器人进行 Monorepo 发布
Monorepo publishing with lerna and a deploy bot
场景如下:
我们想要一个用于多个组件的 monorepo,并希望将 lerna 与 yarn workspaces 一起使用。
为确保语义版本控制不会出现问题,最好也对版本号进行代码审查。
因此 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"
}
}
我在同一条船上。该功能不存在。理想情况下,Lerna 会有一个参数,您可以通过它来跳过版本号的碰撞。你最好在 Github 的项目上大吵大闹:https://github.com/lerna/lerna/issues
对于需要此功能的任何人,他们似乎正在为 v3.0 开发此功能:
分开 "version" 和 "publish" 命令 - https://github.com/lerna/lerna/issues/961
场景如下:
我们想要一个用于多个组件的 monorepo,并希望将 lerna 与 yarn workspaces 一起使用。
为确保语义版本控制不会出现问题,最好也对版本号进行代码审查。
因此 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"
}
}
我在同一条船上。该功能不存在。理想情况下,Lerna 会有一个参数,您可以通过它来跳过版本号的碰撞。你最好在 Github 的项目上大吵大闹:https://github.com/lerna/lerna/issues
对于需要此功能的任何人,他们似乎正在为 v3.0 开发此功能:
分开 "version" 和 "publish" 命令 - https://github.com/lerna/lerna/issues/961