Skip to content

Husky를 이용한 코딩 컨벤션 관리

Changhee Choi edited this page Oct 30, 2020 · 6 revisions

주제: Husky를 이용한 코딩 컨벤션 관리

Husky란

  • Husky 는 Git Hooks를 쉽게 적용할 수 있는 npm 모듈이다.

  • Git Hooks 는 Git과 관련한 어떠한 이벤트가 발생했을 때, 특정 스크립트를 실행하는 기능이다.

    • 예시)
      • pre-commit: 커밋 이벤트가 실행되기 전 단계에서 실행된다.
      • pre-push: push 이벤트가 실행되기 전 단계에서 실행된다.
      • 프로젝트에 .git/hooks 디렉토리를 보면 샘플을 볼 수 있다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a31483c3-a6bd-491c-b911-ff63e59a45d9/_2020-10-30__1.10.27.png

Git Hooks 를 사용했을 때의 문제점

Git Hooks 를 설정하는 스크립트 공유하는 방식과, Git Template 활용하는 방식은 Git Hooks 를 공유하는 방법 중 가장 단순한 접근이지만 작업자는 git clone 후에 반드시 세팅하는 스크립트를 실행하거나 옵션을 지정해주어야 한다.

만일 실수로 (혹은 고의로) 이 과정을 실행하지 않으면 훅을 적용할 수 없다.

husky 동작 방식

  • Husky는 패키지를 설치하면 내부적으로 구현된 Git Hooks 를 .git/hooks 디렉토리에 쓴다.
    • 실제로 husky 를 설치한 뒤 .git/hooks 디렉토리 안를 살펴보면 hooks 가 설정돼 있다.
  • 각 hooks 는 .git/hooks/husky.sh 를 실행하며, husky.sh 는 package.json.huskyrc 등에 정의한 훅을 husky 모듈로 실행한다.

Husky를 활용한 팀 프로젝트 컨벤션 관리

  • pre-commit hook에서 커밋하고자 하는 파일이 코딩 컨벤션을 제대로 지켜서 코딩되었는지 미리 확인하고 잘못된 커밋을 방지할 수 있다.

  • git commit 명령어를 실행하면, husky가 pre-commit으로 스크립트를 실행하여 다음의 과정을 거친다.

    prettier —write // prettier는 소스 코드가 eslint 규칙에 맞도록 포맷팅을 해준다.
    eslint —fix     // 소스 코드에 문제가 있는지 검사를 해주고, 자동으로 문제를 해결해준다. 
    

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a84c5863-f994-4d8e-82ba-d298323aea41/_2020-10-30__1.17.55.png

    • eslint가 검사하는 파일에서 규칙에 어긋난 것이 있다면, husky가 문제점을 알려주고, 커밋은 될 수 없다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e75ce588-08da-4481-b1a5-ca69144e575c/_2020-10-30__1.23.33.png

Clone this wiki locally