3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コミットメッセージのフォーマットをウツクシク保つには

3
Last updated at Posted at 2017-07-17

注意:type/scopeはアルファベットのみしか対応していないようです

コミット時のメッセージのフォーマットをそろえておくと、デバッグ/rollback時などに分かりやすいだけではなく、
コミット履歴からchangelogを自動生成するなどの運用も可能になります。

いちいちコミット文のフォーマットを確認するのは面倒くさいですが、
pre-commit hookを使えば、コミットする前に自動でチェックしてくれるようになります。

今回は以下のようなフォーマットで統一することを目指しますが、設定をいじれば編集可能です。

<type>(<scope>): <subject>
test(staging): 〇〇の機能のテストを追加

huskyをインストール

npm install husky --save-dev

こうすると、コミット前に関連したnpm scriptが走るようになります。

validate-commit-msgをインストール

npm install --save-dev validate-commit-msg
インストールした後は、package.jsonで"commitmsg": validate-commit-msgコマンドを追加します。

package.json
{
"scripts": {
    "commitmsg": "validate-commit-msg"
  }
 }

コミットメッセージのフォーマットは、ここで設定できます。
詳しくは公式参照ですが、
typesscopeの単語を変更したり、subjectPatternに入れたい単語を指定することでわりと必要な情報がそろったコミットになると思います。
(ただ、こちらでtypesを日本語にカスタマイズしてみたところ、認識されませんでした・・・)

package.json
{  
  "config": {
    "validate-commit-msg": {
    "types": ["feat", "fix", "docs", "style", "refactor", "perf", "test", "build", "ci", "chore", "revert"],
    "scope": {
    	"required": false,
	    "allowed": ["*"],
	    "validate": false,
	    "multiple": false
	 },
    "warnOnFail": false,
    "maxSubjectLength": 100,
    "subjectPattern": ".+",
    "subjectPatternErrorMsg": "subject does not match subject pattern!",
    "helpMessage": "",
    "autoFix": false
    }
  }
 }

ちなみに

huskyの機能を使えば、precommit以外でもprepushなどのタイミングでnpm scriptを実行することができます。

package.json
{
  "scripts": {
    "precommit": "npm test",
    "prepush": "npm test",
    "...": "..."
  }
}

git-hookとの対応表はこちら。
https://github.com/typicode/husky/blob/master/HOOKS.md

3
6
0

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
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?