Deno プロジェクトで Velociraptor を使って Git Hooks を設定する

2022/07/04

最近 Deno + deno-cliffy を使った CLI プロジェクトの開発を行っている
まだ勝手に慣れてなくてコードフォーマッタを適用していない状態でコミットをしてしまう失敗をしてしまったので Git Hooks を導入したくなった
調べると Velociraptor という Deno 用タスクランナーに Git Hooks の機能があったため使ってみることにした

インストールからバージョン確認まで

https://velociraptor.run/docs/installation/

インストール

$ deno install -qAn vr https://deno.land/x/velociraptor@1.5.0/cli.ts

パス設定

export PATH="/home/vagrant/.deno/bin:$PATH"

バージョン確認

$ vr --version
1.5.0

書いてみる

https://velociraptor.run/docs/configuration/
https://velociraptor.run/docs/git-hooks/

Deno プロジェクトを用意して velociraptor.yml を追加する

---
scripts:
  lint: deno lint
  format: deno fmt
  format-check: deno fmt --check
  pre-commit:
    cmd:
      - vr lint
      - vr format-check
    gitHook: pre-commit

Git Hooks の設定

vr を実行すれば設定できる、便利

$ vr
...
    • pre-commit
    Runs at pre-commit
    $ vr lint, vr format-check
...

pre-commit ファイルなどもある

$ cat ./.git/hooks/pre-commit 
#!/bin/sh
# Generated by Velociraptor 1.5.0
vr run-hook pre-commit "$@"

動作確認

むやみに改行を入れて、フォーマットに引っかかるコードを用意した
まずは vr format-check が動くことを確認

$ vr format-check                                  

from /home/vagrant/workspace/tmp/helloworld-deno-velociraptor/command.ts:
 8 | -  .option("--name <name:string>",
 9 | -   "name",
10 | -    { required: true }
11 | -    )
 8 | +  .option("--name <name:string>", "name", { required: true })

error: Found 1 not formatted file in 3 files
error: Failed at the format-check script

この状態でコミットすると pre-commmit で設定した vr lintvr format-check を実行してくれる

$ git commit -m "[add] git hook using velociraptor."   
Checked 2 files

from /home/vagrant/workspace/tmp/helloworld-deno-velociraptor/command.ts:
 8 | -  .option("--name <name:string>",
 9 | -   "name",
10 | -    { required: true }
11 | -    )
 8 | +  .option("--name <name:string>", "name", { required: true })

error: Found 1 not formatted file in 3 files
error: Failed at the format-check script
error: Failed at the pre-commit script

Git Hooks 便利である

動かしたリポジトリ

Git Hooks を確認したかったので、別でリポジトリを作成した
https://github.com/honyanya/helloworld-deno-velociraptor


Profile picture

Written by @honyanya web developer.
Twitter

© 2022. @honyanya