팀 프로젝트를 준비하면서 항상 하는 과정 중 하나가 Git Convention을 설정하는 것이다.
Type | Description |
---|---|
Feat | 새로운 기능 추가 |
Fix | 버그 수정 |
Modify | 파일/폴더 수정/삭제/위치변경 |
Style | 코드 포맷 변경, 세미 콜론 누락, 의미 없는 코드 수정 |
Design | CSS등 사용자 UI/UX 디자인 변경 |
Refactor | 코드 리팩토링 |
Docs | 문서 수정 |
Comment | 필요한 주석 추가 및 변경 |
Test | 테스트 코드 추가 |
Chore | 빌드 부분 혹은 패키지 매니저 수정사항 |
위처럼 컨벤션을 정했지만, 항상 지키면서 하기 어려웠다. 그래서 찾아본 것이 컨벤션을 강제화 시켜주는 법이다.
Git Commit Convention을 강제할 수 있도록 지원해주는 라이브러리이다.
npm install --save-dev commitizen cz-customizable
// package.json
{
"scripts": {
...,
"commit": "cz" // npm run commit으로 실행하도록 custom
},
....
"devDependencies": {
...,
},
"config": {
"commitizen": {
"path": "cz-customizable"
}
}
}
// .cz-config.js
module.exports = {
types: [
{ value: "✨ Feat", name: "✨ Feat:\t새로운 기능 추가" },
{ value: "🐛 Fix", name: "🐛 Fix:\t버그 수정" },
{ value: "🔧 Modify", name: "🔧 Modify:\t파일/폴더 수정/삭제/위치변경" },
{
value: "🎨 Style",
name: "🎨 Style:\t코드 포맷 변경, 세미 콜론 누락, 의미 없는 코드 수정",
},
{
value: "💄 Design",
name: "💄 Design:\tCSS등 사용자 UI/UX 디자인 변경",
},
{
value: "🤖 Refactor",
name: "🤖 Refactor:\t코드 리팩토링",
},
{ value: "📝 Docs", name: "📝 Docs:\t문서 수정" },
{ value: "💡 Comment", name: "💡 Commnet:\t필요한 주석 추가 및 변경" },
{
value: "✅ Test",
name: "✅ Test:\t테스트 코드 추가",
},
{
value: "🚚 Chore",
name: "🚚 Chore:\t빌드 부분 혹은 패키지 매니저 수정사항",
},
],
// 메시지 내용 오버라이드
messages: {
type: "커밋 변경유형을 선택해주세요.\n",
scope: "\nDenote the SCOPE of this change (optional):",
// used if allowCustomScopes is true
customScope: "Denote the SCOPE of this change:\n", // 스킵
subject: "커밋제목을 50자이내로 명확하게 작성해주세요.\n",
body: '본문을 작성 해주세요. 여러줄 작성시 "|" 를 사용하여 줄바꿈하세요. (첫줄|둘째줄):\n',
breaking:
"코드에 매우 큰 변화나 핫 픽스가 있는 경우 자세히 입력해주세요 (optional):\n",
footer:
"List any ISSUES CLOSED by this change (optional). E.g.: #31, #34:\n", // 스킵
confirmCommit: "모든 커밋메시지를 제대로 입력하셨나요? (y | n)",
},
allowCustomScopes: false,
allowBreakingChanges: ["Feat", "Fix", "Modify"],
skipQuestions: ["scope", "customScope", "footer"],
subjectLimit: 60,
};
git add
- commit할 파일 등록
npm run commit
or npx cz
- commitizen 실행
commit 유형 선택 (방향키 위 아래로 이동 가능, enter로 선택)
commit 제목 작성 (작성 시 명확하게)
해당 커밋에 대한 상세한 내용을 본문에 작성 (다음 줄로 넘길 때는 |
사용)
작성된 커밋 메세지 확인 후 y | n 입력