git-czを拡張して、API開発用のgit-czを作った
npmパッケージのgit-czを拡張して、git-cz-for-api-developerというnpmパッケージを公開しました。
今回は、このnpmパッケージの紹介をします。
git-czは、対話的にcommitメッセージを作成するnpmパッケージです。
これを利用することで、commitメッセージのフォーマットをチームで合わせることができるし、修正内容がどのようなタイプに属するのか、commitログから一目でわかるようになります。
git-czのcommitメッセージのフォーマットは、以下のようになっています。
<type>[(<scope>)]: <emoji> <subject>
[BLANK LINE]
[body]
[BLANK LINE]
[breaking changes]
[BLANK LINE]
[footer]
業務でこのgit-czを利用していたのですが、一つ問題が出てきました。
それは、実際にリリースするにあたって、どのリリースタイプになるか、commitログから一目でわからないということです。
この時、業務でバックエンドのAPI開発を担当していました。
APIに破壊的変更(major)が加えられればフロントエンドの改修が必須になるので、リリースのタイミングを検討しないといけません。
逆に破壊的変更でなければ、フロントエンドは変更せずに動作するので、すぐにリリースを行なっても問題はありません。
これをcommitログから一目でわかるように、以下のようなフォーマットに変更したいと考え、git-cz-for-api-developerを作ることになりました。
<releaseType>-<type>[(<scope>)]: <emoji> <subject>
[BLANK LINE]
[body]
[BLANK LINE]
[breaking changes]
[BLANK LINE]
[footer]
scope
の部分を releaseType
として利用しても良いでしょう。
しかし、その二つは意味が異なる要素なので、その決断を採用してしまうと本当の意味での scope
を利用したいときに困ります。
そのため、 releaseType
を追加することを決断しました。
releaseType
には以下の三つの選択肢を用意しています。
- major
- APIへの破壊的変更
- minor
- APIに変更があるが、破壊的ではない
- patch
- APIに変更がない
releaseType
をcommitメッセージに追加した結果、commitログを見れば一目でAPIへの変更があるかどうかを理解することができ、APIのバージョン番号を上げるときの指標に使うこともできます。
APIを開発している方は、ぜひ使ってみてください。
Discussion