https://typicode.github.io/husky/get-started.html
pnpm 기준
pnpm add --save-dev husky
다음 스크립트를 사용해 기본 셋팅을 간편하게 설정해줍니다.
pnpm exec husky init
스크립트 실행 후, .husky
파일에 pre-commit
스크립트가 생성되고, package.json
에 이를 실행하는 prepare
명령어가 추가됩니다.
husky는 hook 실행 전에 로컬 명령어를 실행할 수 있도록 해줍니다. 다음 파일들로부터 명령어를 읽습니다.
$XDG_CONFIG_HOME/husky/init.sh
~/.config/husky/init.sh
~/.huskyrc
(deprecated)On Windows: C:\Users\yourusername.config\husky\init.sh
git hook을 생략하기 위해선, -n/--no-verify
옵션을 붙여줍니다.
git commit -m "..." -n # Skips Git hooks
해당 옵션 없이도 생략하도록 하기 위해 HUSKY=0
을 설정해줍니다.
HUSKY=0 git ... # Temporarily disables all Git hooks
git ... # Hooks will run again
여러 코멘드에서 생략하기 위해선, 시작 전 export HUSKY=0
을 선언하고 git 명령어 입력 후 unset HUSKY
을 통해 종료해줍니다.
export HUSKY=0 # Disables all Git hooks
git ...
git ...
unset HUSKY # Re-enables hooks
컴퓨터에 기본 설정으로 hook을 사용하게 하지 않기 위해 ~/.config/husky/init.sh
파일에 다음과 같이 설정해줍니다.
# ~/.config/husky/init.sh
export HUSKY=0 # Husky won't install and won't run hooks on your machine
Commit을 테스트 하기 위해 실제 커밋이 동작하지 않도록 하는 방법도 있습니다. pre-commit
파일에 exit 1
을 넣어주면, commit 명령어를 입력해도 실제 commit이 되지 않습니다.
# .husky/pre-commit
# Your WIP script
# ...
exit 1
git commit -m "testing pre-commit code"
# A commit will not be created
https://commitlint.js.org/guides/getting-started.html
pnpm add --save-dev @commitlint/cli @commitlint/config-conventional
echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
echo "npx --no -- commitlint --edit \$1" > .husky/commit-msg
js로 기본 설치된 config 파일을 내부에서 ts를 사용하고 있는 경우, ts로 변경해주기