커밋 컨벤션
Type | 설명 |
Feat: | 기능 추가, 삭제, 변경 |
Fix: | 버그 수정 또는 typo |
Docs: | 문서 추가, 삭제, 변경 |
Refactor: | 코드 리팩토링, eg. renaming a variable |
Design: | CSS 등 사용자 UI 디자인 변경 |
Comment: | 필요한 주석 추가 및 변경 |
Style: | 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우 |
Test: | 테스트(테스트 코드 추가, 수정, 삭제, 비즈니스 로직에 변경이 없는 경우) |
Chore: | 위에 걸리지 않는 기타 변경사항(빌드 스크립트 수정, assets image, 패키지 매니저 등) |
Init: | 프로젝트 초기 생성 |
Rename: | 파일 혹은 폴더명 수정하거나 옮기는 경우 |
Remove: | 파일을 삭제하는 작업만 수행하는 경우 |
Close | 이슈 종료 키워드 |
- eg. 빌드 스크립트 수정, 패키지 배포 설정 변경, 폴더 이동, 파일명 변경, assets 폴더에 이미지 추가 프로젝트에 필요한 이미지 추가하는 경우
📌 커밋 생성 시
[#issue_number] Feat: ㅇㅇ기능 작성
📌 이슈 종료 시
[close: #issue_number] ㅇㅇ 기능 구현 완료
📌 커밋 컨벤션 템플릿
#conventionMessageTemplate 사용법
1.템플릿 경로 설정 - 커밋 메세지 템플릿의 경로를 지정합니다.
$ git config commit.template [파일경로]
*글로벌 옵션은 다른 프로젝트에도 적용하고 싶으면 쓰시면 됩니다. 저는 옵션을 빼고 진행 했습니다.
*파일의 이름은 'conventionTemplate.txt'입니다.
2. 커밋
1번을 진행한 후, 커밋을 진행 하실때는 $git commit 커맨드를 사용합니다. 메세지 옵션을 넣지 않습니다.
commit 후, 템플릿이 안내하는 데로 커밋 메세지를 작성 하시면 됩니다.
# 제목은 최대 50글자까지 아래에 작성: ex) Feat: Add Key mapping
[#issue_number] Feat: ㅇㅇ기능 작성
# 본문은 아래에 작성
# 꼬릿말은 아래에 작성: ex) Github issue #23
# --- COMMIT END ---
# <타입> 리스트
# Feat : 기능 (새로운 기능)
# Fix : 버그 (버그 수정)
# Refactor : 리팩토링
# Design : CSS 등 사용자 UI 디자인 변경
# Comment : 필요한 주석 추가 및 변경
# Style : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
# Docs : 문서 수정 (문서 추가, 수정, 삭제, README)
# Test : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
# Chore : 기타 변경사항 (빌드 스크립트 수정, assets, 패키지 매니저 등)
# Init : 초기 생성
# Rename : 파일 혹은 폴더명을 수정하거나 옮기는 작업만 한 경우
# Remove : 파일을 삭제하는 작업만 수행한 경우
# ------------------
# 제목 첫 글자를 대문자로
# 제목은 명령문으로
# 제목 끝에 마침표(.) 금지
# 제목과 본문을 한 줄 띄워 분리하기
# 본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.
# 본문에 여러줄의 메시지를 작성할 땐 "-"로 구분
# ------------------
# <꼬리말>
# 필수가 아닌 optioanl
# Fixes :이슈 수정중 (아직 해결되지 않은 경우)
# Resolves : 이슈 해결했을 때 사용
# Ref : 참고할 이슈가 있을 때 사용
# Related to : 해당 커밋에 관련된 이슈번호 (아직 해결되지 않은 경우)
# ex) Fixes: #47 Related to: #32, #21
1. 이벤트 핸들러 함수
- 형식: handle<EventName>
- function handleClick(event) { // 클릭 이벤트 처리 }
2. 상태 설정 함수
- 형식: set<StateName>
- const [isOpen, setIsOpen] = useState(false); function setOpenState(open) { setIsOpen(open); }
3. 비동기 함수
- 형식: fetch<Data>, get<Data>
- async function fetchUserData(userId) { const response = await fetch(`/api/users/${userId}`); const data = await response.json(); return data; }
4. 유틸리티 함수
- 형식: 동사로 시작
- function formatDate(date) { return new Intl.DateTimeFormat('en-US').format(date); } function calculateTotal(items) { return items.reduce((total, item) => total + item.price, 0); }
5. 커스텀 훅
- 형식: use<HookName>
- function useFetchData(url) { const [data, setData] = useState(null); useEffect(() => { async function fetchData() { const response = await fetch(url); const result = await response.json(); setData(result); } fetchData(); }, [url]); return data; }
6. 기타 함수명 규칙
- 형식:
- show...: 무언가를 보여주는 함수
- function showMessage(message) { alert(message); }
- get...: 값을 반환하는 함수
- function getAge(birthDate) { const today = new Date(); const age = today.getFullYear() - birthDate.getFullYear(); return age; }
- calc...: 값을 반환하는 함수
- function calcSum(a, b) { return a + b; }
- create...: 무언가를 생성하는 함수
- function createForm() { const form = document.createElement('form'); return form; }
- check...: 무언가를 확인하고 불린값을 반환하는 함수
- function checkPermission(user) { return user.role === 'admin'; }
- convert...: 무언가를 전환해주는 함수
- function convertToString(value) { return value.toString(); }
함수 작성
- 함수형 컴포넌트 사용: React는 함수형 컴포넌트를 권장합니다. 클래스 컴포넌트보다 간결하고 이해하기 쉽습니다.
- function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
- 화살표 함수 사용: 특히 간단한 컴포넌트나 콜백 함수에 화살표 함수를 사용합니다.
- const Welcome = (props) => <h1>Hello, {props.name}</h1>
- 구조 분해 할당: props나 state를 구조 분해 할당하여 사용합니다.
- function Welcome({ name, age }) { return <h1>Hello, {name}. You are {age} years old.</h1>; }
- 순수 함수 작성: side effects를 최소화하고, 같은 입력에 대해 항상 같은 출력을 반환하는 순수 함수를 작성하도록 권장합니다.
- 컴포넌트 내 함수 정의: 컴포넌트 내에서 사용되는 함수는 컴포넌트 내부에 정의합니다.
- function MyComponent() { const handleClick = () => { console.log('Clicked!'); }; return <button onClick={handleClick}>Click me</button>; }
- 고차 컴포넌트(HOC) 사용: 컴포넌트 로직을 재사용할 때는 고차 컴포넌트 패턴을 사용합니다.
GitHub branch 네이밍 규칙
- main: 프로덕션 준비가 완료된 코드. 최종 배포용 브랜치
- develop: 모든 새로운 기능과 수정을 병합하는 브랜치
- feature/기능명: 새로운 기능 개발, 버그 수정, 개선 등 모든 작업을 처리하는 브랜치
GitHub Issue 규칙 및 Templates
1. 이슈 제목 규칙
- 기능 추가 (Feature)
- Feat: 사용자 로그인 기능 구현
- Feat: 대시보드 화면 구현
- 기능 개선 (Enhancement)
- Enhance: 페이지 로딩 속도 개선
- Enhance: UI 디자인 업데이트
- 기능 수정 (Modification)
- Modify: 회원 가입 양식 수정
- Modify: 프로필 페이지 레이아웃 변경
- 버그 수정 (Bug Fix)
- Fix: 프로필 이미지 업로드 버그 수정
- 새로운 기능 추가 (Addition)
- Add: 비밀번호 재설정 기능 추가
- 설정 (Configuration)
- Config: ESLint 설정 추가
- 코드 릭패토링 (Refactoring)
- Refactor: API 호출 로직 개선
- 문서화 (Documentation)
- Docs: 주요기능정의서 업데이트
- 배포 (Deployment)
- Deploy: 신규 버전 배포
- 기타작업 (Task)
- Task:
2. 템플릿
- 기능요청
## 어떤 기능인가요?
> 추가하려는 기능에 대해 간결하게 설명해주세요
## 작업 상세 내용
- [ ] TODO
- [ ] TODO
- [ ] TODO
## 참고할만한 자료(선택)
3. 이슈 할당
- 담당자 명확히 하기
4. 프로젝트 보드
- 작업 시각적으로 관리
5. 마일스톤 설정
❓
PR Template
- 제목은 '[#기능 번호] 변경 사항' 구조로 작성할 것
- Issue와 연동할 것
https://2jinishappy.tistory.com/337
## #️⃣연관된 이슈
> ex) #이슈번호, #이슈번호
## 📝작업 내용
> 이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)
### 스크린샷 (선택)
## 💬리뷰 요구사항(선택)
> 리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요
>
> ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?
- 제목 : feat(issue 번호): 기능명 ex) feat(17): pull request template 작성
## 🔘Part
- [x] FE
<br/>
## 🔎 작업 내용
- 기능에서 어떤 부분이
- 구현되었는지 설명해주세요
<br/>
## 이미지 첨부
<img src="파일주소" width="50%" height="50%"/>
<br/>
## 🔧 앞으로의 과제
- 내일 할 일을
- 적어주세요
<br/>
## ➕ 이슈 링크
- [레포 이름 #이슈번호](이슈 주소)
<br/>
Prettier
{
"printWidth": 100,
"tabWidth": 2,
"singleQuote": true,
"bracketSpacing": true,
"semi": false,
"trailingComma": "es5",
"arrowParens": "always",
}
ESLint
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
'prettier',
'plugin:prettier/recommended',
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 12,
sourceType: 'module',
},
plugins: [
'react',
'prettier',
],
rules: {
'prettier/prettier': 'error',
'react/react-in-jsx-scope': 'off',
'react/prop-types': 'off',
'no-console': 'warn',
'no-unused-vars': 'warn',
},
};
'📃 프로젝트' 카테고리의 다른 글
서비스 기획 - 애자일 특강 (0) | 2024.10.04 |
---|---|
소프트웨어 테스트 (1) | 2024.09.25 |
토이 프로젝트 2 - 그룹 멘토링 (1) (0) | 2024.07.26 |
🧸 토이 프로젝트 1 후기 (6) | 2024.07.22 |