Git Hooks dengan Lefthook

evergreenLast update on Jul 9, 2026
Download .md

Kita menggunakan Lefthook untuk mengelola git hooks. Lefthook dipilih karena cepat (Go-based), support parallel execution, dan konfigurasi sederhana.

Instalasi

pnpm add -D lefthook
pnpm lefthook install

Hook prepare sudah otomatis jalan di pnpm install via "prepare": "lefthook install" di package.json.

Konfigurasi

File: lefthook.yml

pre-commit:
  parallel: true
  jobs:
    - name: lint
      run: pnpm lint {staged_files}
      glob: "*.{js,ts,mjs,cjs,astro}"
    - name: format
      run: pnpm format --check {staged_files}
      glob: "*.{js,ts,mjs,cjs,astro,json,yaml,yml}"

commit-msg:
  jobs:
    - name: commitlint
      run: pnpm commitlint --edit {1}

Penjelasan

HookJobFungsi
pre-commitlintESLint cuma di file yang di-stage
pre-commitformatCek formatting dengan Prettier
commit-msgcommitlintValidasi commit message

Semua job di pre-commit jalan paralel biar cepat.

Skipping Hooks

Gunakan --no-verify hanya untuk darurat:

git commit --no-verify -m "wip: fix later"

Untuk skip hook tertentu:

LEFTHOOK_EXCLUDE=lint git commit -m "feat: skip lint"