작성자 : 김다희
- 여기 문서 참고해서 husky를 다운로드 합니다.
- 다운로드 하고나면 프로젝트 루트 경로 밑에 .husky / node_modules / package-lock.json 이 생긴다.



- 루트 경로 밑에 package.json을 만들어준다.
{ "scripts": { "prepare": "husky install" }, "devDependencies": { "husky": "^7.0.0" } }
- .husky 하위에 prepare-commit-msg 를 만들어주자.

- chmod 777 prepare-commit-msg 로 권한을 바꿔주자. (777까지는 아니여도 된다.)
- prepare-commit-msg 는 아래랑 같은데 이건 커밋 규칙에 따라 바꿔주면 된다.
#!/bin/bash Font_RED='\\033[91m' Font_CLEAR='\\033[0m' # No Color PREFIX_LIST=( feat fix refactor chore ) if [ -z "$BRANCHES_TO_SKIP" ]; then BRANCHES_TO_SKIP=("main" "develop" "release" "hotfix") fi BRANCH_NAME=$(git symbolic-ref --short HEAD) BRANCH_NAME="${BRANCH_NAME##*/}" JIRA_ID=`echo $BRANCH_NAME | egrep -o '^\\w.-[0-9]+'` JIRA_ID=`echo $JIRA_ID | tr '[:lower:]' '[:upper:]'` COMMIT_MESSAGE="$(cat $1)" PREFIX=`echo $COMMIT_MESSAGE | cut -d ':' -f1 | sed 's/ *$//g'` MESSAGE=`echo $COMMIT_MESSAGE | cut -d ':' -f2` BRANCH_EXCLUDED=$(printf "%s\\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$") BRANCH_IN_COMMIT=$(grep -c "$JIRA_ID" $1) TICKET=[$(git rev-parse --abbrev-ref HEAD | grep -Eo '^(\\w+/)?(\\w+[-_ ])?[0-9]+' | grep -Eo '(\\w+[-])?[0-9]+' | tr "[:lower:]" "[:upper:]")] if [[ $BRANCH_EXCLUDED -eq 1 || "$COMMIT_MESSAGE" == "$TICKET"* ]];then exit 0; fi if ! [[ "$COMMIT_MESSAGE" =~ ":" ]];then printf "${Font_RED}Prefix 구분을 위해 : (세미콜론)이 필요합니다.${Font_CLEAR}\\n" exit 1 fi if !(printf '%s\\n' "${PREFIX_LIST[@]}" | grep -xq $PREFIX); then printf "${Font_RED}[${PREFIX}] 는 존재 하지 않는 Prefix 입니다.${Font_CLEAR}\\n" echo "사용가능한 Prefix 목록" printf '%s\\n' "${PREFIX_LIST[@]}" exit 1 fi if [ -n $JIRA_ID ] && ! [[ $BRANCH_IN_COMMIT -ge 1 ]]; then echo "[$JIRA_ID] $PREFIX: $MESSAGE" > $1 fi