Skip to content

Convention

이유찬 edited this page Nov 15, 2021 · 18 revisions

⛳️ 컨벤션

1. 네이밍 룰

common

  • 변수, 함수 : camelCase
  • 컴포넌트 파일 : PascalCase
  • 상수 : UPPERCASE_SNAKE_CASE (ex:MAX_CONTENT_INDEX)
  • 리소스(폴더, 파일) : kebab-case
  • json 파일 : lowcase_snake_case
  • 이미지 이름은 '형태_의미_상태' 순서
btn_register_on.png
btn_register_off.png

Client 폴더 구조

  • 도메인 단위로 폴더 구조를 만든다.
  • components : 다른 페이지에서 한 번이라도 재사용을 한다면 components 폴더에 만든다.
  • pages : 해당 페이지에서만 사용한다면 pages 폴더에 만든다.

2. 커밋 컨벤션

  • git config commit.template .gitmessage.txt 로 각자 설정!
# [BE/FE] Type: Message 
# Title은 최대 50글자 정도로만 입력
# Title을 아랫줄에 작성, Title 끝에 마침표 금지, 무엇을 했는지 명확하게 작성
### ex)
### [FE] feat: message

# --- Body ---
# 본문 내용을 아랫줄에 작성 (commit의 상세내용, 부가적인 설명 등)
### ex) 
### - OOO 기능 구현
### - XXX 기능 수정

# --- Footer ---
# 꼬릿말을 아랫줄에 작성 (해당 commit과 관련된 이슈 번호 등을 추가)
### - issue (#1)
### - ref (#2)

# --- Type ---
#   feat    : 새로운 기능 추가
#   fix     : 버그 수정
#   style   : 코드 의미에 영향을 주지 않는 변경사항 (세미콜론, 줄 간격 등등)
#   design  : HTML, CSS, UI 수정
#   refactor: 코드 리팩토링
#   test    : 모든 테스트 작업
#   docs    : 문서 추가 및 수정
#   chore   : 빌드 부분, 패키지 매니저, 세팅 관련 파일 추가 및 수정
#   rename  : 파일 네이밍 변경
#   remove  : 파일 제거

3. 린트/프리티어/타입스크립트 설정

3-1. 린트

  • airbnb 린트 스타일 <리서치 후 세팅 예정>

3-2. 프리티어

module.exports = {
  singleQuote: true,
  semi: true,
  useTabs: true,
  tabWidth: 2,
  trailingComma: "all",
  printWidth: 100,
  arrowParens: "always",
};

3-3. tsconfig.json

4. Issue & PR 컨벤션

[Domain]${대분류} - ${중분류}
ex ) [BE]공용 API - 기술 목록 조회 API

Issue

## 기능 설명

## 완료 조건

- [ ] 완료 조건 1
- [ ] 완료 조건 2

PR

## 관련 이슈

- closes (이슈 번호)

## 셀프 체크리스트

> 최소 1명 이상의 assign을 받아야만 Merge 가능합니다.

- [ ] Warning Message 발생 유/무
- [ ] Coding Convention 준수 유/무

## 작업 내용

> 구현 및 작업 내역

- [x] (내역 1)
- [x] (내역 2)
- [x] (내역 3)

## Preview

> 선택 사항

## PR 특이 사항

> PR을 볼 때 주의깊게 봐야하거나 말하고 싶은 점

- (특이 사항 1)
- (특이 사항 2)
- (특이 사항 3)

5. 칸반 보드(마일스톤), 이슈 등록 정리, PR 정리

- 원격 저장소 각자 fork 한뒤 풀리퀘스트로 관리 (workflow 구체화시켜야함)
- PR 과 issue는 1:1 대응시키기
- 라벨 꼭! 달기 (라벨 분류해야함)
- PR과 Issue 꼼꼼하게 link 하기

6. Git Flow

upstream/main

  • 배포하는 코드를 가지고 있는 브랜치입니다.
  • 기능 구현 단계에서 직접 commit 하지 않습니다.

upstream/develop

  • Main branch에서 파생됩니다.
  • 개발되는 기능들이 merge 되는 브랜치입니다.

origin/{type}/#{이슈 번호}

  • develop branch에서 파생됩니다.
  • 각 기능들이 가지게 되는 브랜치입니다.
  • 실제 브랜치명은 '{type}/#{이슈 번호}' 입니다.
  • e.g. feat/#23

7. 라벨

#0075ca 문서
#a2eeef 구현
#e99695 프론트엔드
#64EB8A 백엔드
#e4e669 리팩토링
#d73a4a 버그
#456356 세팅
#ABB3F9 학습
#E0540E 디자인
#BB7423 테스트
#B6F10B 스타일
#393221 오류수정

Clone this wiki locally