commitizen の format をカスタマイズできるアダプターを作った
cz-format-extension をリリースした。
cz-format-extension
経緯
commitizen/cz-cliの format は自分で作ることが可能だが、そこを容易にしてくれる
cz-customizableが使いにくく、内部で使われているパッケージのバージョンが古いのでセキュリティ的な面で心配があったので、camcam_lemonと一緒につくろうってなった。
使い方
セットアップに関してはUsageを参照。
.czferc.js
という config ファイルに諸々設定を書いていく。
module.exports = {
questions({inquirer, gitInfo}) {
return [
{...},
{...},
]
},
commitMessage({answers, gitInfo}) {
return ...
}
}
questions
Inquirer.jsの prompt 関数の引数に渡す質問項目を返す。
cz-cli は cz-conventional-changelog など、アダプターを作り際に Inquirer.js のインスタンスを渡してくれている。
引数 inquirer には、そのインスタンスをそのまま渡しているので、new inquirer.Separator()
とか使うことができる。
引数 gitInfo には、git-repo-infoで取得できる git の meta 情報が渡ってくる。この情報で条件分岐なんかも可能になる。
commitMessage
最終的なメッセージとなる文字列を返す。
引数 answers には、questions の結果のオブジェクトが渡ってくる。
引数 gitInfo は、questions のそれと同じ。
型
config ファイル向けの型を提供してる。
JSDocs で書けば、エディタによっては補完してくれるはず。
VSCode ではできる。
終わりに
2 年前にフロントエンドエンジニアになりたて、JS 何もわからないって状態のときに、なにか npm パッケージ作りたいなってなってたときに作り出したパッケージで、そのあと 2 年弱寝かせてしまった。
先週やるかーってなって、すっと TS で書き直して一気に作れたので、成長を感じている。
types の置き場所未だに迷う。