普段からいくつか趣味で作ったツールやライブラリを npm パッケージとして publish しています。ちょっと工夫していることとして、「できるだけ簡単に npm publish できるようにしておく」というものがあります。npm publish が心理的に、手順的に難しいと、すでに main ブランチに新機能や修正が入っているのに、npm publish されていない、という状況が発生しがちです。新機能や修正をすぐにユーザに送り届けられるよう、npm publish は無思考でできるようになっていると嬉しいです。
その一環として、リリースノート (CHANGELOG) の自動生成というのをやっているので、その紹介をしてみます。本当は 6 月にやっていた Maintainer Month 期間 に間に合わせたかったのですが、とろとろしていたら 7 月になってしまった! まあ遅れたから公開しないのも勿体ないので気にせず公開します。
GitHub のリリースノートの自動生成機能を使う
github-changelog-generator とか、git-chglog とか、自動生成するツールはすでに色々あるのだけど、id:mizdra は最近 GitHub の「Automatically generated release notes」という機能を使っている。
まず事前準備として、.github/release.yml
というファイルをリポジトリに commit しておきます。この label がついていたらこのグループに振り分ける、みたいな設定を書きます。
# .github/release.yml # ref: https://github.com/mizdra/eslint-interactive/blob/ae140c92081f8fb5c6d2cc3368ed5b186529981f/.github/release.yml changelog: exclude: labels: - 'ignore for release' categories: - title: Breaking Change labels: ['Type: Breaking Change'] - title: Bug labels: ['Type: Bug'] - title: Documentation labels: ['Type: Documentation'] - title: Feature labels: ['Type: Feature'] - title: Refactoring labels: ['Type: Refactoring'] - title: Testing labels: ['Type: Testing'] - title: Maintenance labels: ['Type: Maintenance'] - title: CI labels: ['Type: CI'] - title: Question labels: ['Type: Question'] - title: Security labels: ['Type: Security'] - title: Dependencies labels: ['Type: Dependencies'] - title: Other Changes labels: ['*']
GitHub Release で新しい release のリリースノートを書くところにあるボタンを押すだけ。
これだけです。簡単!
細かい編集をしてから公開も可能
自動生成されたリリースノートはそのまま textarea に挿入されるので、textarea 上で手直しして、それから公開する、ということができるます。結構細かい調整をしたいことがあるので、こういうのができるのはありがたいですね。
グルーピング用のラベルは @azu/github-label-setup
を使って用意すると楽
「Type: Dependencies」とか「Type: Security」とかは GitHub がデフォルトで用意しているラベルリストの中に入っていないので、自分で作ってやる必要があります。手で作ると結構面倒なので、id:mizdra は @azu/github-label-setup
というツールを利用して1コマンドで作ってます。
$ # 事前に @azu/github-label-setup をインストールしたり、envchain に GITHUB_ACCESS_TOKEN を保存しておく $ npm i -g @azu/github-label-setup $ ehvchain --set github GITHUB_ACCESS_TOKEN $ # リポジトリルートへ移動 $ cd mizdra/eslint-interactive $ # https://github.com/azu/github-label-setup#default-labels にあるラベルリストに変更 $ envchain github github-label-setup -A
オススメです。
最後に
Maintainer Month に合わせて色々な人がオープンソースのメンテナンスについて記事を書かれているので、是非読んでみてください。また普段オープンソースのメンテナンスをしている人は、なにか記事を書いてみて、普段の活動を振り返ったりすると、良い機会になると思います。