husky를 쓰면 좋은 점

prettier와 ESLint 설정을 세팅하고 팀별로 개발 정책을 정해도 팀원 한 명이 실수로 적용하지 않느다면 수정하려고 시간이 들어갈 것이다. 따라서 열심히 정한 정책들은 강제적으로 지키도록 하고 그렇지 않을 경우 merge, push와 같은 과정에서 작업을 중단하도록 하는 git hook을 활용하는 것도 좋은 방법이다.

git hook 이란?

<aside> 💡

Git과 관련한 이벤트가 발생했을 때 특정 스크립트를 실행할 수 있도록 하는 기능을 말함 ex) commit, push

git hook 설정은 까다롭고 모든 팀원들이 사전에 repo를 클론 받고 메뉴얼하게 사전 과정을 수행해야 하지만 hook이 실행됨을 보장할 수 있는데 실수로라도 사전 과정을 시행하지 않는다면 hook이 실행되지 않음

</aside>

husky란

git hook 설정을 도와주는 npm package로 번거로운 git hook 설정이 편하다. npm install 과정에서 사전에 세팅해둔 git hook을 다 적용시킬 수 있어서 모든 팀원이 git hook 실행이 되도록 하기가 편함

설치 및 적용

-stagedhusky만으로 커밋 메시지 형식 검사를 설정하고, 특정 브랜치 보호 규칙을 적용하기 위해 아래와 같이 절차를 따르면 된다.

pnpm add husky --save-dev
npx husky-init
npm install husky @commitlint/{config-conventional,cli} lint-staged --save-dev

husky 초기화와 훅 설정

npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
npx husky add .husky/pre-push "sh .husky/pre-push.sh"

오류 발생

$ git commit -m "chore: husky 적용"     
npm error Missing script: "test"
npm error
npm error To see a list of scripts, run:
npm error   npm run
npm error A complete log of this run can be found in: C:\\Users\\tjrms\\AppData\\Local\\npm-cache\\_logs\\2024-09-24T04_35_15_383Z-debug-0.log
husky - pre-commit hook exited with code 1 (error)

pre-commit

npm test // 삭제

했더니 아주 잘 된다.