最近 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-commitGit 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 lint と vr 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 scriptGit Hooks 便利である
動かしたリポジトリ
Git Hooks を確認したかったので、別でリポジトリを作成した
https://github.com/honyanya/helloworld-deno-velociraptor