허스키를 사용한 선택적인 사전 커밋 확인
Prettier, Eslint 서식 지정 또는 TypeScript 검사를 수행할 수 있습니다.
커밋 메시지를 확인하는 것은 빠르지만 서식 지정 및 유형 확인을 실행하면 프로젝트가 커짐에 따라 더 많은 시간이 걸립니다.
lint-staged을 더 예쁘고 에스린트로 사용하실 수 있으며,
그러나 TypeScript 확인에 사용하는 것은 의미가 없습니다. git 준비 파일에서 유형을 변경하면 다른 파일에서 입력이 중단될 수 있기 때문입니다.
모든 엔지니어는 서로 다른 작업 흐름을 가지고 있습니다. TypeScript 컴파일러에서 문제를 해결하려면
tsc --watch
프로세스를 실행하고 손상된 부분이 없는지 확인할 수 있습니다.계속 실행하면 랩탑 속도가 느려지므로 실행하고 싶지 않습니다
tsc --watch
. 커밋이 10,20,30초 이상 걸리더라도 커밋 전 단계에서 이 검사를 수행해도 괜찮습니다.그러나이 사전 커밋을 선택 사항으로 만드는 방법은 무엇입니까? 따라서 수동으로 서식을 지정하고 유형을 확인하는 팀원은 좌절하지 않을 것입니다.
husky 버전 7에서는 bash 스크립트를 사용하여 사전 커밋 구성을 활성화합니다. 그렇다면
tsc
또는 lint-staged
를 실행하기 전에 확인하지 않는 이유는 무엇입니까?!이것은
.husky/pre-commit
파일의 시작 부분이 됩니다.#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
APP_PRE_COMMIT_OPTIONS="$(dirname "$0")/_/pre-commit.options"
따라서
pre-commit.options
폴더 안에 있는 .husky/_/
라는 파일에 옵션을 넣을 수 있습니다.
.husky/_/
should have a.gitingore
file that will ignore our option file.
다음으로 옵션 파일이 존재하지 않는 경우 일부 메시지를 인쇄해 보겠습니다.
YELLOW="\033[1;33m"
GREEN="\033[1;32m"
RESET="\033[0m"
if ! [ -f "$APP_PRE_COMMIT_OPTIONS" ]; then
echo "${YELLOW}\nSkipping pre-commit hook."
echo "If you want to use pre-commit for TypeScript check and lint-staged, run:\n"
echo " ${GREEN}echo -e 'APP_TS=true;\\\nAPP_LINT=true;' > $P_APP_PRE_COMMIT_OPTIONS${RESET}"
echo ${YELLOW}\nIt will add some delay before committing!\n${RESET}"
exit 0
fi
이제 옵션 파일을 소싱하고 사용자가 Linting을 활성화했는지 확인합니다.
source $APP_PRE_COMMIT_OPTIONS
if [ -n "${APP_LINT}" ] && [ "${APP_LINT}" == "true" ]; then
echo "${GREEN}[husky] [pre-commit] [lint-staged]${RESET}"
npx lint-staged
fi
더 많은 옵션을 추가하고 필요한 경우 확인할 수 있습니다!
최종 결과
.husky/pre-commit
파일은 다음과 유사해야 합니다.#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
APP_PRE_COMMIT_OPTIONS="$(dirname "$0")/_/pre-commit.options"
YELLOW="\033[1;33m"
GREEN="\033[1;32m"
RESET="\033[0m"
if ! [ -f "$APP_PRE_COMMIT_OPTIONS" ]; then
echo "${YELLOW}\nSkipping pre-commit hook."
echo "If you want to use pre-commit for TypeScript check and lint-staged, run:\n"
echo " ${GREEN}echo -e 'APP_TS=true;\\\nAPP_LINT=true;' > $P_APP_PRE_COMMIT_OPTIONS${RESET}"
echo ${YELLOW}\nIt will add some delay before committing!\n${RESET}"
exit 0
fi
source $APP_PRE_COMMIT_OPTIONS
if [ -n "${APP_TS}" ] && [ "${APP_TS}" == "true" ]; then
echo "${GREEN}[husky] [pre-commit] [tsc]${RESET}"
npx tsc
fi
if [ -n "${APP_LINT}" ] && [ "${APP_LINT}" == "true" ]; then
echo "${GREEN}[husky] [pre-commit] [lint-staged]${RESET}"
npx lint-staged
fi
Reference
이 문제에 관하여(허스키를 사용한 선택적인 사전 커밋 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/strdr4605/optional-pre-commit-checks-with-husky-5ei6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)