はじめに
gitmoji文化というものがあります。
以下は私のプロジェクトにおけるコミット履歴です。
参照: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)が用意されていて、導入も簡単だったので良かったです。
参考
- GitHubのコミットメッセージに絵文字を入れて開発効率をあげる
- Emojiで楽しく綺麗なコミットを手に入れる
- atom/blob/master/CONTRIBUTING.md#git-commit-messages
一方
gitmoji-cliはたしかに便利だったんですが、本家のgitmojiのみしか使えなかったので、プロジェクト下において明らかに不必要な絵文字があったり、逆に痒い所の為の絵文字が無かったりしてそこはそこで不便でした。
そこで今回、カスタマイズ可能なcustomizable-gitmoji-cliを作成しました。
customizable-gitmoji-cli
オプションの詳細などはREADME-jp.mdを読んでもらえると助かります。
このCLIでは、.gitmojirc
などの設定ファイル2によって自由に絵文字を追加することが出来ます。また、ESLint/Prettier/Stylelint/etc...の共有設定ファイルのようにプレセットを読み込む機能もあります。
{
"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が様々な場面で使われることを祈っています。
よかったらプロジェクトにスターをしてください。励みになります。
-
個人の感想です。 ↩
-
設定ファイルはcosmiconfigに対応しています。つまり
.gitmojirc
,.gitmojirc.json
などの形式が対応しています。 ↩ -
記事内で絵文字を使わない所が良くないと思う。 ↩