[기타] husky와 commitlint로 커밋 컨벤션 관리하기

박기영·2024년 5월 19일
0

기타 기술

목록 보기
4/4
post-thumbnail

커밋 컨벤션! 어떤 커밋이 어떤 것을 진행했는지 쉽게 알아보기 위해
팀 내에서 컨벤션을 정해놓는 경우가 많다.
그러나, 컨벤션을 지키지 않은 경우에 이를 알려주거나 수정해줄 방법이 없다.
huskycommitlint를 활용하여 커밋 컨벤션을 강제로 지키도록 하는 것을 알아보자!

필요한 것

필자는 패키지 매니저로 yarn을 사용했다!

  1. husky
  2. @commitlint/config-conventional
  3. @commitlint/cli
yarn add -D husky @commitlint/config-conventional @commitlint/cli

여기서 잠깐! 정확히 알고 가자.
husky는 커밋 컨벤션을 잡아주는게 아니다. git hook을 쉽게 다룰 수 있게 해주는 도구이다.
커밋 컨벤션을 직접적으로 제한하는 것은 commitlint이다.
huskygit commit 단계에서 commitlint가 커밋 컨벤션을 검사하도록 설정하는 것이다.
라이브러리의 목적을 헷갈리지 않도록 주의하자!

방법

1. husky 세팅

우선, husky 세팅을 위한 보일러 플레이트를 생성한다.
Husky 공식 문서에 따르면, yarn을 사용할 때는 husky init을 사용하지 않고,
수동으로 준비를 해줘야 한다.

1. package.json 수정하기

우선, 스크립트를 추가해주도록 하자.
postinstall 스크립트를 다음과 같이 추가해주도록 하자.

{
  // ... //
  
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "postinstall": "husky"
  },

  // ... //
}

2. husky 초기화하기

yarn run postinstall

프로젝트 루트 디렉토리에 .husky 폴더가 생성된 것이 확인된다면 OK!

참고 이미지

2. git hook 설정하기

husky는 결국 git hook을 쉽게 다루기 위한 도구이므로,
git hook의 어떤 단계를 트리거로 할지 설정해줘야한다.
커밋 컨벤션을 체크하는 것이 목표이므로, commit-msg을 트리거로 하도록 하자.
.huskycommit-msg 파일을 생성하고 다음과 같은 코드를 작성하자.(.husky/_가 아니다!)

#!/usr/bin/env sh
. "$(dirname "$0")/_/husky.sh"

yarn commitlint --edit $1

이제 커밋 메세지에 대해 위 코드가 실행될 것이다.

3. 커밋 컨벤션 설정하기

husky를 통해 commit-msg를 체크하도록 했는데,
어떤 것을 체크할지는 아직 정하지 않았다.
이번에 그 것을 정해주도록 해보자!
루트 디렉토리에 commitlintrc.json 파일을 생성하자.
그리고 다음과 같은 코드를 입력한다.

{
  "extends": ["@commitlint/config-conventional"],
  "rules": {
    "type-enum": [
      2,
      "always",
      [
        "ci",
        "chore",
        "docs",
        "ticket",
        "feat",
        "fix",
        "perf",
        "refactor",
        "revert",
        "style"
      ]
    ]
  }
}

4. 작동 확인하기

참고 이미지

설정해놓은 컨벤션에 맞지 않는 메세지를 작성하는 경우,
에러가 발생하면서 커밋이 취소되는 것을 확인 할 수 있다!!

참고 자료

Husky 공식 문서
데브머리큐님 블로그
Flynndev님 블로그

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글