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이 자동으로 가비지 컬렉션을 실행하기 전에 실행되는 훅으로, 가비지 컬렉션을 조정하거나 관련 작업을 수행할 수 있습니다.