commitlint 로 커밋 메시지 규칙 설정하기 🚧💜 리액트/라이브러리2024. 6. 20. 18:05
Table of Contents
시작하며...
팀 프로젝트를 하다 보면 커밋 메시지 컨벤션을 정하게 된다.
그런데 이렇게 규칙을 정했음에도 실수로 커밋 메시지를 잘못 작성하거나 지키지 않는 경우도 발생하게 된다. 😭 그래서 이러한 커밋 컨벤션을 지키지 않았을 때 커밋이 되지 않도록 commitlint 를 설정할 수 있다.
commitlint 설정하기
husky 설치하기
husky 는 Git 이벤트가 발생할 때 자동으로 실행되는 스크립트로 커밋을 만들기 전에 특정 작업을 수행하거나 푸시하기 전에 작업을 할 수 있도록 도와준다.
그래서 먼저 husky 를 설치한다.
npm install husky --save-dev
npx husky install
commit-msg 파일 작성
husky 를 설치하면 프로젝트에 .husky
라는 폴더가 생기게 된다.
해당 파일 하위에 commit-msg
파일을 생성해 아래 내용을 작성한다.
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit "$1"
패키지 설치
필요한 패키지들을 설치한다.
npm install --dev @commitlint/config-conventional @commitlint/cli
commit 규칙 설정
.commitlintrc.json
파일을 만들어 커밋 메시지 규칙을 설정한다.
{
"extends": ["@commitlint/config-conventional"],
"parserPreset": {
"parserOpts": {
"headerPattern": "^(?<type>.+):\\s(?<subject>.+)$",
"headerCorrespondence": ["type", "subject"]
}
},
"rules": {
"subject-empty": [2, "never"],
"subject-full-stop": [2, "never", "."],
"type-case": [0],
"type-empty": [2, "never"],
"type-enum": [
2,
"always",
[
"🎉 Init",
"✨ Feat",
"📦️ Chore",
"💄 Design",
"🚑️ Fix",
"✅ Test",
"🚀 Deploy",
"🔨 Refactor",
"🚚 Rename",
"📚 Docs",
"🔥 Remove"
]
]
}
}
- headerPattern: 정규식을 사용하여 커밋 메시지의 헤더 파싱
- headerCorrespondence: headerPattern 의 각 부분을 type 과 subject 에 매핑
- subject-empty: subject 가 비어있지 않아야 함
- subject-full-stop: subject 끝에 마침표 사용하지 않음
- type-empty: type 이 비어있지 않아야 함
- type-enum: type 이 지정된 값 중 하나여야 함
적용 결과
규칙을 지키지 않고 커밋을 했을 때 아래와 같이 뜨게 되며
규칙을 지켜 제대로 커밋을 하면 제대로 커밋이 되는 것을 확인할 수 있다.
마치며...
commitlint 를 설정하게 되어 커밋 컨벤션을 강제로 지키게 되어 커밋 메시지의 일관성이 생기게 된다. 특히 gitmoji 를 사용할 경우 커밋을 하기 전에 .commitlintrc.json
파일에 있는 걸 그대로 가져와 복붙 할 수 있게 되니깐 생산성도 향상된다! 아직 commitlint 밖에 설정을 안 해봤지만 다음엔 husky 를 제대로 사용해서 적용해보고 싶다!
'💜 리액트 > 라이브러리' 카테고리의 다른 글
[Storybook] Next.js + Tailwind CSS + TypeScript 스토리북 적용하기 (0) | 2024.07.28 |
---|---|
[에디터] React Quill 이미지 사이즈 조절 (quill-image-actions) (0) | 2024.07.02 |
[React] Framer motion 애니메이션 적용 - 버튼, 모달, 스크롤, 화면전환 (0) | 2024.05.20 |
[React / CSS] 동적 조건부 스타일 지정 classNames 라이브러리 (0) | 2024.05.03 |
[React] Zod로 React-Hook-Form 유효성 검증 (0) | 2024.03.05 |
@짱잼 :: 짱잼이의 FE 개발 공부 저장소
FE 개발자가 되고 싶은 짱잼이
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!