pre-commitが便利
git commit
する前にあれこれやってくれるやつ。Nodeのプロジェクトだとhuskyとか使うことがあるけど、monorepoで言語が混在してるときに便利。ルートにこんな感じの.pre-commit-config.yaml
を置きます。
- repo: git://github.com/pre-commit/pre-commit-hooks rev: v2.4.0 hooks: - id: trailing-whitespace - id: check-merge-conflict - id: check-yaml - id: end-of-file-fixer - repo: local hooks: - id: format-app1 name: Format app1 entry: bash -c 'cd app1 && mix format' language: system files: ^app1/.+\.exs*$ - id: format-app2 name: Format app2 entry: bash -c 'cd app2 && npm run lint:staged' language: system files: ^app2/.+\.(js|scss|svelte)$ - id: format-app3 name: Format app3 entry: bash -c 'cd app3 && npm run lint:staged' language: system files: ^app3/.+\.(js|scss|svelte)$
あらかじめ用意されたhookも使えるし、files
で条件を指定するとマッチするファイルをcommitするときだけ走ってくれて賢い。あとサブディレクトリで何かするときはbash -c 'cd sub && ...'
するとよいです。