Husky

Husky는 Git 저장소에서 사용되는 Git 훅(Git Hook) 관리 도구이며, Git 훅은 Git 작업(커밋, 푸시 등)이나 이벤트(후크)가 발생할 때 실행되는 스크립트이다.

설치

pnpm dlx husky-init && pnpm install

husky를 설치하면 해당 폴더 하위에 .husky 폴더가 생성된다.

새 훅 추가

commitlint를 예시로 설명하면 다음과 같이 추가할 수 있다.

npx husky add .husky/commit-msg 'npx commitlint --edit $1'

활용

  • 코드 검사 및 포맷팅: 커밋 전에 코드를 자동으로 검사하거나 포맷팅
  • 테스트 수행: 커밋 또는 푸시 전에 자동으로 테스트를 실행하여 코드 품질을 유지
  • 빌드 자동화: 푸시 전에 자동으로 프로젝트를 빌드하여 배포 가능한 형태로 준비
  • 커밋 메시지 검증: 커밋 메시지 형식을 체크하여 일관된 커밋 메시지를 유지

Git Hook

다 설명할 수는 없지만 대체로 다음과 같은 훅들을 주로 활용한다.

  • pre-commit: 커밋이 수행되기 전에 실행되는 훅. 코드 검사, 포맷팅, 테스트 등의 작업 수행
  • prepare-commit-msg: 커밋 메시지를 작성하기 전에 실행되는 훅. 커밋 메시지에 일부 정보를 추가하거나 변경
  • commit-msg: 커밋 메시지가 생성된 후에 실행되는 훅. 커밋 메시지의 형식을 체크하거나 유효성 검사
  • post-commit: 커밋이 완료된 후에 실행되는 훅. 커밋 이후의 작업을 자동화
  • pre-rebase: 리베이스(rebase) 작업이 수행되기 전에 실행되는 훅
  • post-rewrite: 리베이스와 같은 재작성 작업이 완료된 후에 실행되는 훅
  • pre-push: 푸시 작업이 수행되기 전에 실행되는 훅. 푸시 전에 테스트나 빌드와 같은 작업 수행
  • post-receive: 서버 측에서 리모트 저장소에 데이터가 수신된 후에 실행되는 훅으로, 서버에 관련된 작업을 수행할 수 있습니다.
  • post-update: 서버 측에서 리모트 저장소에 업데이트된 후에 실행되는 훅으로, 업데이트와 관련된 작업을 수행할 수 있습니다.
  • pre-auto-gc: Git이 자동으로 가비지 컬렉션을 실행하기 전에 실행되는 훅으로, 가비지 컬렉션을 조정하거나 관련 작업을 수행할 수 있습니다.