본문으로 바로가기

[husky] husky를 이용하여 console.log를 막아보자.

◆ 참고

해당 게시글은 시리즈로 이루어져 있습니다.

이전 게시글 프로젝트 설정하는 방법을 보지 않았으면 잘 동작하지 않을 수 있습니다.

이전 게시글 보러가기 : 이동하기

 

이번 게시글에서는 husky를 이용하여 코드에 console.log가 있는 경우 commit을 막아보자.

 

pre-commit

pre-commitgit commit 하기 전 특정 동작(기능)을 할 수 있는 git hook이다.

이것을 이용하여 commit 하기 전console.log 함수가 있는 지 확인할 수 있다.

 

우선 .husky > _ > console-log-check.sh 파일을 생성 해주자.

이제 shell script를 이용하여 commit 한 파일에 console.log 함수가 있는 지 확인을 해야한다.

 

◆ commit 파일 목록 확인하기

console.log 유무를 확인하기 위해서는 commit 파일 내용을 알아야 한다.

어떻게 하면 commit 할 파일 목록을 얻을 수 있을까?

git 명령어를 사용하면 쉽게 얻어올 수 있다.

 

명령어 : git diff --cached --name-only --diff-filter=ACMRT

위 명령어를 이용하면 commit을 위해 준비된 파일 이름을 가져올 수 있다.

 

◆ console.log 확인하기

검색하는 방법도 간단하게 해결할 수 있다.

xargs grep 를 이용하면 된다.

 

명령어 : xargs grep -i 'console\.log' --with-filename --line-number

위 명령어를 이전 commit 파일 목록 확인하기 명령어에 pipe(|)로 이어주면 된다.

 

간단하게 설명하면 아래와 같다.

xargs grep : 검색한다

-i : 대소문자 구분 없이

--with-filename : 일치한 파일명

--line-number : 일치한 줄 번호

 

◆ 최종 스크립트

if git diff --cached --name-only --diff-filter=ACMRT | xargs grep -i 'console\.log' --with-filename --line-number; then
  echo "COMMIT REJECTED: Please remove 'console.log' functions."
  exit 1
fi

 

위 스크립트를 console-log-check.sh 에 작성해주면 된다.

 

◆ 테스트

console.log()
console.info()
console.error()

 

위 코드를 작성한 후 commit을 해보았다.

그 결과 작성해둔 에러 메시지가 정상적으로 출력되었다.

 

결과

이렇게 하나 하나씩 팀 단위로 필요한 규칙을 추가하면 된다.

다음 게시글에서는 commit-message 규칙을 적용해보도록 하자.

 

마지막

틀린 부분이 있다면 댓글로 말씀 부탁드리겠습니다.

반응형