LoginSignup
5
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-26

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): 具体的なリリースフローがある程度まとまったので書きました

5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4