본문 바로가기
공부/기타

Commitlint 커밋린트 란

by 로디네로 2022. 9. 6.
반응형

 

개요

 

commitlint 를 이해하기 전에 알아야될것들을 우선 개요에서 설명하려 한다.

 


 

커밋 메세지 컨벤션 : 

 

프로젝트를 깃으로 관리할땐 커밋메세지를 남기곤 한다.

 

협업을 위해서 커밋메세지의 통일성이 필요하고, 커밋 메세지 컨벤션은 이에 대한 규칙이다.

 

규칙들 :

- 제목과 본문을 빈 행으로 구분

- 제목을 50글자 이내로 제한

- 제목의 첫 글자는 대문자로 작성

- 제목의 끝에는 마침표를 넣지 않는다

- 제목은 명령문으로 작성하며 과거형X

- 본문의 각 행은 72글자 내로 제한한다

- 어떻게 보다는 무엇과 왜 를 설명한다

 

커밋 메세지 구조 :

$ <type>(<scope>): <subject> -- 헤더
  <BLANK LINE>               -- 빈줄
  <body>                     -- 본문
  <BLANK LINE>               -- 빈줄
  <footer>                   -- 바닥글

 

githook : 

 

프로그래밍에서 hook이란 특정 함수 전후에 호출이 되는 코드를 말한다

 

git에서 이벤트는 commit, pull, merge 등이 있을것이다.

 

githook를 이용해 위의 git 이벤트 전후에 어떠한 코드를 호출시킬 수 있다.

 

우리가 호출시키지 않더라도 이미 지정되어 있는 훅 들이 있다.

(클라이언트훅 : commit발생,merge발생,push 전 /서버훅 : push가 발생했을때 서버에서 실행)

 

아래 경로에서 확인이 가능하다

$ ls -ahl
...

$ cd .git/hooks
$ ls
...
-> .sample 파일들이 존재한다
-> 사용하기 우해서는 .sample을 지워주면 된다.

 

husky : 

 

Githooks를 쉽게 적용할 수 있는 npm 모듈

 

Githooks에 자세히 알지 못해도 정책을 관리,공유할 수 있다.

 

ex : master로 직접 push하는것을 방지하기

 

 

 


 

 

commitlint 란

 

위에서 말한 커밋 컨벤션을 지키기 쉽게 해주는 린터(코딩스타일)의 일종이다.

(conventional commit linter의 일종)

 

기준 컨벤션은 아래와 같다.

$ <type>(<scope>): <subject> -- 헤더
  <BLANK LINE>               -- 빈줄
  <body>                     -- 본문
  <BLANK LINE>               -- 빈줄
  <footer>                   -- 바닥글

 

장점 : 커밋이 생성되기 전 내역을 검사해주어, 장기적인 프로젝트 유지 보수에 도움이 된다.

단점 : 지저분한 부수적인 파일들이 생긴다.

 


 

사용 : 

 

commitlint 를 githook에 등록시켜서 커밋 등록 전 컨벤션이 지켜졌는지 검사하게 해보자

 

 

1. commitlint cli, conventional config 설치

npm install --save-dev @commitlint/{config-conventional,cli}

# For Windows:
npm install --save-dev @commitlint/config-conventional @commitlint/cli

 

 

2. commitlint.config.js 파일 생성

echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

 

3. husky를 이용해 githook 을 등록

$ npm install husky --save-dev
$ npx husky install

 

4. commit-msg hook 적용하기

npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'

 

 

5. 테스트

컨벤션을 지키지 않은 메시지로 커밋을 생성

git commit -m 'helloworld'

 

 

결국 이 모든건 커밋 스타일을 통일하기위해 하는 일이라는것

 


 

 

 

References : 

http://meonggae.blogspot.com/2017/03/git-git-hooks.html

https://hepheir.github.io/posts/2022-05-28-commitlint/

https://www.conventionalcommits.org/en/v1.0.0/

https://blog.wanzargen.me/37

 

 

반응형

댓글