· seohyeon

ESLint&Prettier와 Git 협업 규칙

프로젝트 초기 세팅

왜 초기 세팅이 중요한가

프론트엔드 프로젝트는 시간이 지나면 코드가 급격히 늘어나고,
각자 스타일대로 작성된 코드가 쌓이기 시작하면 유지보수가 어려워지기 마련입니다.

  • 같은 기능이라도 사람마다 들여쓰기, 따옴표, 세미콜론이 다름
  • 동작은 하지만 잠재적 버그를 가진 코드가 PR을 통해 스며듬
  • 팀 규칙이 모호해지면서 코드 품질이 떨어짐

그래서 ESLint + Prettier 같은 기본 도구를 프로젝트 초반에 반드시 설정해두어야
협업 비용을 최소화하고, 코드 품질을 일관되게 유지할 수 있습니다.


ESLint

문법 오류나 잠재적 버그를 잡아주는 JavaScript/TypeScript 코드 분석 도구입니다.
(코드 “내용”을 검사하는 역할)

특징

  • 문법 에러, 사용되지 않는 변수, 위험한 패턴 등을 탐지
  • 코드가 돌아가긴 하지만, 나중에 문제를 일으킬 가능성이 있는 부분도 경고
  • 팀이 정한 규칙을 코드 레벨에서 강제할 수 있음

왜 필요할까?

  • 최소한의 코드 품질을 보장
  • PR 리뷰 시 스타일 관련 피드백을 줄여 리뷰 효율 증가
  • 잠재적인 에러를 미리 예방할 수 있음

CLI

pnpm lint         # 전체 검사
pnpm lint -- --fix  # 자동 수정
### 예시

```ts
heroImage: '../../assets/gitflow.png'
const b = 2;

if (a == b) {
    console.log("같다");

==는 타입 비교가 느슨해 위험하므로 ESLint는 경고를 띄워줍니다.

Prettier

코드 스타일을 자동으로 통일해주는 포맷터 (형식/모양 담당)

특징

  • 들여쓰기, 따옴표, 세미콜론 등 스타일 통일
  • 코드의 “내용”은 건드리지 않음
  • 저장 시 자동 포맷팅 적용 가능

왜 필요할까?

  • 개발자마다 스타일이 달라 발생하는 혼란 제거
  • 커밋 전 자동 정리 → 깔끔한 코드 유지

CLI

pnpm prettier src --write

예시

{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}

Before / After

// before
const sum=(a:number,b:number)=>{return a+b}

// after
const sum = (a: number, b: number) => {
  return a + b;
};

GitHub 협업 규칙

협업 프로젝트에서는 “누가 어떤 브랜치에서 무엇을 작업하는지”가 명확해야 충돌을 줄일 수 있습니다. 여기서는 Git Flow vs GitHub Flow를 비교하고 정리합니다.

깃 플로우란?

여러 개발자가 동시에 작업할 때 브랜치 구조와 작업 흐름을 명확히 정의하는 방법론

대표 방식:

  • Git Flow
  • GitHub Flow

Git Flow

main + develop + feature + release + hotfix
브랜치가 세분화된 클래식한 전략

브랜치 구성

  • main
    실제 배포된 버전이 존재하는 브랜치
    안정적이며, 배포된 코드만 존재해야 함.

  • develop
    다음 버전 출시를 위해 모든 기능을 통합하는 브랜치
    서로 다른 feature 브랜치가 모여 테스트·통합되는 공간.

  • feature/
    새로운 기능 개발용 브랜치
    예: feature/login, feature/dashboard-ui
    develop에서 분기 → 개발 → 다시 develop에 병합.

  • release/
    배포 전 QA 및 안정화 단계
    develop에서 기능 개발을 모두 끝낸 후 release로 분기해 최종 점검.

  • hotfix/
    운영 중 발생한 긴급 버그 수정용
    main에서 직접 분기 → 수정 후 develop과 main 양쪽에 병합.

장점

  • 버전 관리가 명확하고 체계적
  • 개발 규모가 큰 프로젝트에서도 관리가 용이
  • 기능 개발 / QA / 배포가 분리됨 → 안정적인 릴리스 가능

단점

  • 브랜치가 많고 프로세스가 복잡
  • 작은 팀/MVP 개발에서는 필요 이상으로 무거움
  • 브랜치 이동과 머지 작업에 드는 비용 증가

GitHub Flow

main + feature/*
GitHub 기반 협업(특히 PR 중심)에 최적화된 단순하고 현대적인 전략

브랜치 구성

  • main
    항상 “바로 배포 가능한 상태”여야 하는 브랜치
    불안정한 코드가 들어오면 안 됨.

  • feature/
    기능 개발용 브랜치
    예: feature/login-page, feature/fetch-user
    main에서 분기 → 작업 → Pull Request → main으로 병합하는 구조.

규칙

  • main은 항상 안정적이고 배포 가능한 상태 유지
  • 기능 개발 시 feature 브랜치 생성 후 작업
  • 작업이 끝나면 PR(Pull Request) 생성해 코드 리뷰 진행
  • 승인되면 main에 병합하고 필요하면 즉시 배포
  • 모든 변경은 반드시 PR을 통해 이뤄지는 것이 원칙

장점

  • 구조가 단순해 이해하고 사용하기 쉬움
  • 빠르게 기능을 추가·수정해야 하는 소규모 팀에 매우 적합
  • PR 기반 협업으로 코드 품질 관리 가능
  • 배포 사이클이 빠른 서비스 운영에 유리

단점

  • Git Flow처럼 정교한 버전 관리 체계는 없음
  • QA 단계가 Git Flow만큼 분리되어 있지 않아, 팀 내부 규칙이 필요
  • 큰 조직/프로젝트에서는 배포 관리에 추가 도구가 필요할 수 있음

출처

https://medium.com/addweb-engineering/workflows-comparison-github-flow-vs-git-flow-3cd811f3d0ae