🍩はじめに
ちょいちょいコミットメッセージ型の規約を間違えるので整理しておく。
Semantic Versioning についても少し絡める。
App | Version |
---|---|
1.0.0 |
|
2.0.0 |
それぞれの導入目的
- Semantic Versioning の目的
-
依存性地獄に陥るのを防ぐためのバージョン番号に関する規約。
依存性を安全に管理することに役立つ。 - Conventional Commits の目的
-
コミットメッセージのための規約。
-
変更履歴 (CHANGELOG) を自動的に生成できます。
-
semantic version 単位で自動的に履歴をまとめられます (コミットの型に基づきます)。
-
チームメイトや一般のユーザー、およびその他の利害関係者へ変更の内容を伝えることができます。
-
ビルドや公開の処理をトリガーできます。
-
より構造化されたコミット履歴を調査できるようにすることで、人々があなたのプロジェクトに貢献しやすくなります。
-
🚋Conventional Commits と Semantic Versioning の関係図
特に指定がない限り、ここでの API とは パブリック API のことを指す。 |
🐕Semantic Versioning
|
API に後方互換性のない、破壊的な変更があったとき。 |
|
API の後方互換性を保ったまま、新機能を追加もしくは機能を廃止したとき。 |
|
API の後方互換性を保ちつつバグの修正を行ったとき。 |
🐈Conventional Commits
type(scope): subject (1)(2)(3)
body (4)
footers (5)
1 | |
2 | |
3 | |
4 | |
5 | <token>: <description> の形式(ex. refs: #123 )。
|
Commit Type
Type | Description |
---|---|
feat |
|
fix |
|
! |
|
BREAKING CHANGE
API の破壊的変更が伴うとき、コミットは次のうちどちらかにする。
|
上記に加え、よく使われる型はAngular の規約やcommitlintを参考[1]に下記のようになる。
Custom Type | Description |
---|---|
build |
ビルドシステムまたは外部依存関係に影響を与える変更。 |
chore |
その他の変更。 |
ci |
CI 設定やスクリプトの変更。 |
docs |
ドキュメントのみの変更。 |
perf |
パフォーマンス改善のためのコード変更。 |
refactor |
バグ修正や新機能のコードを含まない、リファクタリングによる変更。 |
revert |
|
style |
コードの動作には影響しない、コードのフォーマット変更。 |
test |
テストの追加や修正。 |
バージョンアップについて
基本的に |