피드로 돌아가기
Dev.toFrontend
원문 읽기
Lefthook 도입을 통한 Commit 속도 10% 개선 및 Hook 워크플로우 최적화
Save 10% on Every Git Commit by Migrating from Husky to Lefthook
AI 요약
Context
Husky 기반의 pre-commit 단계에서 Lint, Type-check, Unit test를 순차적으로 모두 수행함에 따른 개발 흐름 저하 발생. 모든 검증 작업을 하나의 Hook에 집중시켜 Commit당 약 17초의 대기 시간이 발생하는 구조적 병목 지점 확인.
Technical Solution
- Go 언어 기반의 Lefthook 도입을 통한 런타임 실행 속도 최적화
- Parallel execution 설정을 통한 개별 Job의 동시 수행 구조 설계
- {staged_files} 필터링을 적용하여 변경된 파일에 대해서만 Lint 및 Prettier를 수행하는 효율적 범위 제한
- 검증 부하에 따른 Hook 분리 전략 채택으로 pre-commit에는 가벼운 Lint를, pre-push에는 무거운 Type-check와 Test를 배치
- stage_fixed 옵션을 통한 수정 사항의 자동 Staging 처리로 워크플로우 단순화
Impact
- Commit당 소요 시간 약 2초 단축으로 전체 프로세스 성능 10% 개선
Key Takeaway
Hook 단계의 책임 분리(Separation of Concerns)를 통해 개발자 경험(DX)과 시스템 검증 강도를 동시에 확보하는 최적화 전략 필요.
실천 포인트
- pre-commit 단계에서 5초 이상 소요되는 무거운 작업이 있는지 점검 - 전체 파일 대상 검사 대신 Staged files 대상으로만 실행 범위 제한 적용 - 작업의 성격에 따라 pre-commit(빠른 피드백)과 pre-push/CI(정밀 검증)로 검사 주기 분리