lernaではlerna version --conventional-commits
というように--conventional-commits
オプションを使うことで、コミットから次のバージョンを推測できます。
詳しくはlernaでのmonorepoにおけるリリースフロー(Fixed/Independent) | Web Scratchを参照。
しかし、この--conventional-commits
はデフォルトでは問題があります。
GitHubではPRをマージするとマージコミットが作られますが、このマージコミットも変更のコミットとして扱われてしまいます。
タグ付け後のマージコミットが全体の変更として扱われる
これによって、変更してないけどマージコミットによって、バージョンを上げないといけないといった判定になってしまいます。
includeMergedTags
この問題を回避するため、lernaには--include-merged-tagsというオプションがあります。
このオプションを有効化するとマージコミットは無視してくれます。
これによってマージコミット != 全体の変更ではなくなるため、無駄なバージョンアップを避けれます。
このオプションはCLIでは次のように有効化できます
lerna changed --include-merged-tags
lerna.json
ではincludeMergedTags
で設定できます。
{
"version": "independent",
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
"packages/*",
"examples/*",
"packages/@textlint/*",
"test/integration-test",
"website"
],
"includeMergedTags": true
}