prettier와 ESLint 설정을 세팅하고 팀별로 개발 정책을 정해도 팀원 한 명이 실수로 적용하지 않느다면 수정하려고 시간이 들어갈 것이다. 따라서 열심히 정한 정책들은 강제적으로 지키도록 하고 그렇지 않을 경우 merge, push와 같은 과정에서 작업을 중단하도록 하는 git hook을 활용하는 것도 좋은 방법이다.
<aside> 💡
Git과 관련한 이벤트가 발생했을 때 특정 스크립트를 실행할 수 있도록 하는 기능을 말함 ex) commit, push
git hook 설정은 까다롭고 모든 팀원들이 사전에 repo를 클론 받고 메뉴얼하게 사전 과정을 수행해야 하지만 hook이 실행됨을 보장할 수 있는데 실수로라도 사전 과정을 시행하지 않는다면 hook이 실행되지 않음
</aside>
git hook 설정을 도와주는 npm package로 번거로운 git hook 설정이 편하다. npm install 과정에서 사전에 세팅해둔 git hook을 다 적용시킬 수 있어서 모든 팀원이 git hook 실행이 되도록 하기가 편함
-staged
와 husky
만으로 커밋 메시지 형식 검사를 설정하고, 특정 브랜치 보호 규칙을 적용하기 위해 아래와 같이 절차를 따르면 된다.
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 // 삭제
했더니 아주 잘 된다.