6
2

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 3 years have passed since last update.

customizable-gitmoji-cliで、gitのコミットメッセージに絵文字を付ける

Last updated at Posted at 2019-10-26

はじめに

gitmoji文化というものがあります。

以下は私のプロジェクトにおけるコミット履歴です。

image.png

参照:https://github.com/SnO2WMaN/customizable-gitmoji-cli/commits/master

なぜ?

いろいろあると思いますが、私は以下の理由です。

コミットの粒度を上げる

特技はgit commit -a -m いろいろ修正です!
参照:横着で神経質な私とあなたに贈るgit add -p

私は放っておくとこれになっちゃうので、なんとなくカテゴライズしておくことで目標立てて開発をするようにしました。 1

Conventional Commitsの環境整えるの面倒になってきた

Conventional Commitsというものがあります。(こっちのほうがスタンダードだとは思います、少なくともJavascript / Node.js / フロントエンドサイドのプロジェクトではそうだと思います)

大体次のようなコミットメッセージです。

fix: Fix Something
chore(deps): Update dependencies.

これは自動でバージョン更新したりするときなどに有用なんですが、いかんせんCLIの整備やいろいろ付け加えた結果設定ファイルがモリモリ増えちゃって何が何なのかわからなくなっちゃいました。

gitmojiでは、同作者によるCLI(gitmoji-cli)が用意されていて、導入も簡単だったので良かったです。

参考

一方

gitmoji-cliはたしかに便利だったんですが、本家のgitmojiのみしか使えなかったので、プロジェクト下において明らかに不必要な絵文字があったり、逆に痒い所の為の絵文字が無かったりしてそこはそこで不便でした。

そこで今回、カスタマイズ可能なcustomizable-gitmoji-cliを作成しました。

customizable-gitmoji-cli

オプションの詳細などはREADME-jp.mdを読んでもらえると助かります。

このCLIでは、.gitmojircなどの設定ファイル2によって自由に絵文字を追加することが出来ます。また、ESLint/Prettier/Stylelint/etc...の共有設定ファイルのようにプレセットを読み込む機能もあります。

.gitmojirc
{
  "emojiFormat": "emoji",
  "presets": ["@sno2wman/gitmoji-preset"],
  "rules": [
    {
      "emoji": "🤡",
      "description": "Everything must go!!",
      "name": "clown_face"
    }
  ],
}

この設定ファイルをプロジェクトに含んでおけば、CLIからコミットをする限り、全員が同じコミット規則に従ってコミットが行われるはずです。

emojiFormat

コミット時に添付される絵文字のフォーマットを選択できます。
emoji, codeのどちらかを設定することが出来ます。

  • emoji
    • 👌, 🐶, 🔪
    • 🔪 Kill process
  • code
    • :ok_hand:, :dog:, :knife:
    • :knife: Kill process (Github上などでは絵文字が表示されます)

私はemojiに設定しています。(たまに各種サービスやCI上では:knife:と表示されて見栄えが悪いので…)

rules

以下の形式でgitmojiを定義してください。

{
  "emoji": "🦍",
  "description": "Feel good.",
  "name": "gorilla"
}

ikatyang/emoji-cheat-sheetが役に立つはずです。

presets

まだ本家のgitmojiに対応するプレセットのgitmoji-preset-baseと、私個人の@sno2wman/gitmoji-presetしかありません…
名前解決の方法は以下のとおりです。

  • @username/gitmoji-preset
    • そのまま読み込みます
  • gitmoji-preset-foo
    • そのまま読み込みます
  • bar
    • gitmoji-preset-barの形にして読み込みます。

gitmoji-preset-baseを除く全てのプレセットは、プロジェクト直下にnpm i/yarn addしてインストールされている必要があります。

展望

  • #3
    • プレセット側で設定することで、コミット履歴より自動でバージョン更新の判断などが出来るようにしたい。

おわりに 3

gitmojiが様々な場面で使われることを祈っています。

よかったらプロジェクトにスターをしてください。励みになります。

貢献をしてくれるともっと喜びます。

  1. 個人の感想です。

  2. 設定ファイルはcosmiconfigに対応しています。つまり.gitmojirc, .gitmojirc.jsonなどの形式が対応しています。

  3. 記事内で絵文字を使わない所が良くないと思う。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?