Help us understand the problem. What is going on with this article?

Lerna(monorepo)とCHANGELOG(リリースノート)

More than 1 year has passed since last update.

Lernaなどのmonorepoツールを使っていて困るのが、Conventional Changelogなど既存のリリースフローがそのまま適応できない点です。
さらに、Lernaの中でも管理モードが2つありそれぞれでCHANGELOGの管理に使えるものが異なります。
Lernaでパッケージを管理する際大きく分けてFixedモードとIndependentモードがあります。

Fixedモード

管理下にあるパッケージがすべて同じバージョンとなるモード

このモードに対して使えるツールとしてlerna-changelogがあります。
BabelやJestなどが利用しています。
GitHub PRにつけたラベルを元にジャンルを分けてCHANGELOGを吐き出すツールです。

Independentモード

管理下にあるパッケージがそれぞれ異なるバージョンとなるモード

もっとも簡単な方法としてはlerna--conventional-commitsが利用できます。
Conventional Commitsに沿ったコミットメッセージを書くことで、各パッケージに自動でCHANGELOG.mdを生成してくれます。

欠点としてはlerna publish --conventional-commitsはバージョンなども自動的に決定されるためあまり柔軟性がありません。たとえばsemverで1.0.0未満などの特別扱いなどはできません。

その他

lernaはpackage@versionというタグでgit tagを付けてるようになっています。これにより既存のCHANGELOGツールの想定外の範囲となって取れてないのが殆どです。
lernaの内部的にも使ってるconventional-changeloglernaPackageというオプションでpackage@version形式に対応することができます。

たとえばつぎのようにして特定のパッケージに関するCHANGELOGを取ることができます。

$ conventional-changelog --lerna-package almin-logger
<a name="5.0.0"></a>
# 5.0.0 (2017-07-26)

* Convert almin-logger to typescript (#265) ([f4deeb7](https://github.com/almin/almin/commit/f4deeb7))
* Create CODE_OF_CONDUCT.md (#259) ([85f3636](https://github.com/almin/almin/commit/85f3636))
* Update README ([50e3359](https://github.com/almin/almin/commit/50e3359))
* Update README.md ([6d80544](https://github.com/almin/almin/commit/6d80544))
* feat(TypeScript): Add TodoMVC TypeScript (#263) ([b05f7aa](https://github.com/almin/almin/commit/b05f7aa))
* docs(almin): Add almin principle + CQRS (#262) ([47c67a3](https://github.com/almin/almin/commit/47c67a3))
* refactor(example): Update Counter example (#260) ([8c09db5](https://github.com/almin/almin/commit/8c09db5))

おわり

まだ決定版がないので、こうやってるよ的な例がもっと欲しい

追記(2019-01-26): 具体的なリリースフローがある程度まとまったので書きました

azu
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away