mmag

ハマったことメモなど

pre-commitが便利

https://pre-commit.com/

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 && ...'するとよいです。