Develop
ESLint, Prettier TypeScript 설정 가이드 — 팀 코드 스타일을 통일하는 방법
TypeScript 개발 프로젝트 환경에서 코드의 문법 결함과 논리 오류를 차단해 주는 ESLint와, 들여쓰기 및 괄호 서식을 맞춰주는 Prettier 간의 규칙 충돌을 미연에 봉쇄하고 팀의 스타일 표준을 완벽 강제하는 정석 파이프라인 설정을 정리했습니다.

- ·ESLint는 코드 품질과 잠재적 버그를 정적 분석으로 잡아주고, Prettier는 코드 형식을 자동으로 맞춰준다
- ·eslint-config-prettier를 쓰지 않으면 ESLint와 Prettier의 포맷 규칙이 충돌해 자동 수정이 서로를 되돌릴 수 있다
- ·TypeScript용 ESLint는 @typescript-eslint/parser와 @typescript-eslint/eslint-plugin 패키지가 필요하다
- ·husky + lint-staged 조합으로 커밋 시 자동으로 ESLint와 Prettier를 실행할 수 있다
팀 협업 도중 개별 개발자마다 로컬 IDE 세팅과 들여쓰기 포맷(Tab vs Space, Single vs Double Quote)이 달라, 커밋 푸시를 날릴 때마다 불필요한 줄바꿈 변경사항이 깃 충돌(Git Conflict)에 잔뜩 얽혀 쓸데없는 메인 유지 보수 공수를 버려야만 했습니다. 이 지긋지긋한 스타일 파편화를 타파하고자 ESLint와 Prettier 설정을 구축했고, 코드 저장 시점에 스스로 정규 서식으로 포맷되도록 설정했습니다. 또한 `husky` 로 깃 후크를 엮어두어, 룰을 무시하고 불량 코드를 커밋하려는 비정상 소스는 로컬 단에서 커밋 자체를 반려하도록 파이프라인을 타이트하게 조여 팀 내 코드 규격을 아름답게 평정했습니다.
1. 정적 정렬 규칙 도입의 이유
팀 협업에서 일관성 있는 ESLint 코드 스타일 규격의 가치
프로젝트 소스 코드의 스타일이 작성한 사람의 버릇에 따라 중구난방으로 퍼져 있으면 가독성이 곤두박질치고 인수인계가 고통스러워집니다. 특히 버전 형상 관리 측면에서, 단순 콤마 찍기나 세미콜론 누락 같은 의미 없는 텍스트 포맷 변경이 불필요하게 Git Diff 지표에 노출되어, 실제 비즈니스 로직의 변경점 추적을 방해하고 리뷰어의 시야를 흐리는 악영향을 초래합니다. 코드 정적 분석과 통일된 서식 규칙은 팀 협업 코드의 품질을 공장 라인처럼 일정하고 정갈하게 뽑아주는 강력한 인프라 투자입니다.
품질 진단과 자동 서식을 양분하는 ESLint 및 Prettier 역할 분담
초보 개발자들이 가장 많이 오해하는 지점이 두 도구의 기능을 혼용해 생각하는 것입니다. ESLint 는 코드 품질(Quality)을 수호합니다. '선언되지 않은 변수를 참조하지는 않는가', '쓰이지 않는 임포트가 방치되어 있진 않은가' 같은 잠재성 버그와 나쁜 코드 냄새를 정적 분석해 빨간 줄을 띄워 주죠. 반면 Prettier 는 오직 코드 서식(Formatting)만을 담당합니다. 한 줄 최대 글자 제한, 홑따옴표 사용 여부, 세미콜론 부착 규칙 등 미관상의 스타일을 가차 없이 정렬해 줍니다. 이 둘의 명확한 역할 경계를 구분 짓고 파이프라인을 조립해야 툴 셋팅이 꼬이지 않습니다.
2. 타입스크립트 및 룰 통합
정밀 린트 규칙 설정을 위한 ESLint TypeScript 파서 바인딩
TypeScript 환경에서 ESLint가 자바스크립트용 내장 기본 파서로 동작하려 들면, 인터페이스(interface)나 제네릭 같은 독자적 컴파일 기호들을 해석하지 못하고 문법 오류 콘솔을 뿌려댑니다. 이를 해소하기 위해 타입스크립트용 고유 구문 파서인 @typescript-eslint/parser 와 규칙 플러그인 플랫 파일들을 패키지로 다운 받아 연결해야 하죠. 이렇게 이식해 두면 타입스크립트의 특수한 정적 다형성 및 타입 오버라이드 환경에 최적화된 고차원적인 린트 진단이 부드럽게 성립됩니다.
두 도구 간 포맷 충돌을 차단하는 eslint-config-prettier 연동 요령
가장 흔히 저지르는 세팅 삽질 중 하나는, ESLint 내부의 서식 규칙과 Prettier의 포맷 설정이 상호 충돌하여 코드를 저장할 때마다 두 도구가 파일 내용을 서로 다르게 덮어쓰며 무한 수정 뺑뺑이를 유도하는 버그입니다. 이를 깔끔하게 중재하기 위해 **eslint-config-prettier 라이브러리를 추가해 주는 것이 필수적입니다.** 이 컴포넌트 팩이 린트 설정에 맵핑되면, ESLint 안에서 작동하며 Prettier의 서식 룰과 중복 충돌을 일으키던 자잘한 포맷 규칙들을 싹 비활성화 잠금 시켜주어, 포맷은 Prettier가 전담하고 품질 검사는 ESLint가 처리하는 깔끔한 평화 조약이 완성됩니다.
// .eslintrc.json - 타입스크립트와 프리티어 평화 조약 설정 예시
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier" // eslint-config-prettier가 마지막에 와서 충돌하는 린트 포맷 룰을 영구 잠금 처리
],
"rules": {
"@typescript-eslint/no-unused-vars": "error", // 미사용 변수 선언 시 가차 없이 빌드 에러 처리
"no-console": "warn" // 실무 실수로 삽입된 콘솔 로그 감지 시 노란 경고
}
}3. IDE 설정과 Git 커밋 자동화
저장 즉시 오류를 수정하는 VS Code 및 husky 코드 검사 자동화
설정을 마쳤다면 팀원들의 로컬 VS Code 에디터 자체에 저장 단추를 누르는 즉시 도구들이 알아서 고치도록 환경 설정을 강제 이식해야 합니다. 프로젝트 루트 폴더에 .vscode/settings.json 파일을 파고 editor.codeActionsOnSave 내부에 source.fixAll.eslint: "always" 속성을 박아주면 코딩 효율이 극대화됩니다. 이에 덧붙여, 깃 커밋 트랙에 묶여 돌아가는 husky 와 lint-staged 패키지를 적용해 두면, 혹여 린트 경고를 무시하고 억지로 커밋을 쏘려는 불량 소스를 커밋 개시 2초 전에 강제 검진하여 반려 처리하므로, 깃 저장소에 늘 투명하고 아름다운 코드셋만 격리 상주하게 인프라를 보위할 수 있습니다.
// .vscode/settings.json - 저장 시 자동 린트 교정 강제 설정
{
"editor.formatOnSave": false, // 기본 포맷터 작동을 중지시키고
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "always" // 저장하는 찰나의 순간에 ESLint 가 오류 자동 교정을 이행
}
}자주 묻는 질문
eslint-plugin-prettier와 eslint-config-prettier 중 무엇을 설치해야 하나요?+
공식적으로는 `eslint-config-prettier` 단독 설치를 강력히 추천합니다. `eslint-plugin-prettier`는 프리티어 오류를 린트 에러 빨간 줄로 변환해 띄워주는데, 이는 에디터를 불필요하게 무겁게 만들고 타이핑 시 빨간 경고창이 남발되어 작업 집중을 흩트리기 때문에 권장하지 않는 추세입니다.
husky 커밋 검사 단계에서 에러가 떠서 git commit 자체가 실패하고 반려됩니다.+
커밋하려는 파일에 ESLint 가 발견한 치명적인 에러(예: 타입 선언 불량, 문법 오류 등)가 섞여 있어 커밋이 거부된 상황입니다. 오류 파일을 수정해 저장한 뒤 `git add` 를 다시 치고 커밋을 쏘시면 해결됩니다. 린트 규칙이 비즈니스 무결성을 잘 방어해 주고 있다는 증거입니다.
관련 글
TypeScript strict 모드 설정 완벽 가이드 — tsconfig 옵션과 자주 만나는 타입 오류 해결
TypeScript 개발 시 런타임에 터지기 쉬운 치명적인 예외 버그들을 컴파일 타임에 안전하게 색출해 내는 strict 모드의 핵심 작동 구조와 자주 마주치는 null/any 에러 클리어 방법을 알기 쉽게 정리합니다.
Jenkins GitHub Webhook 트리거 완벽 가이드 — push 후 즉시 빌드를 시작하는 방법
매번 손수 빌드를 누르거나 pollSCM으로 리소스를 낭비하지 않고, GitHub Webhook을 연계해 머지 즉시 실시간 Jenkins 빌드가 시작되도록 설계하는 방법을 상세히 다룹니다.
Jenkins 빌드 스케줄러 완벽 가이드 — Jenkinsfile에 cron 트리거 추가하는 방법
Jenkins UI에서 직접 관리하던 파이프라인을 Jenkinsfile로 전환하고, cron 트리거로 매일 자동 빌드를 구성하는 방법을 정리했습니다. H 표현식을 이용한 부하 분산과 UTC 시간대 대처 팁까지 상세히 다룹니다.