이롭게 현명하게
[JavaScript] ESLint와 Prettier 충돌 해결법 본문

목차
ESLint와 Prettier 충돌 해결법
충돌 해결 확인하기
ESLint에 잘 모른다면 아래 게시글을 확인해 주세요.
https://devyihyun.tistory.com/243
[JavaScript] ESLint 이론
목차 개발자마다 다른 코드 스타일코드 작성 규칙을 지켜야 하는 이유ESLint란?ESLint와 Prettier 차이점ESLint 장단점ESLint와 Prettier 충돌 해결법 [개발자마다 다른 코드 스타일]개발자들마다 코드를 작
devyihyun.tistory.com
https://devyihyun.tistory.com/244
[JavaScript] ESLint의 구성요소
목차ESLint 패키지 : plugin과 config자바스크립트 환경에서 ESLint를 사용하는 이유ESLint 규칙의 예외 처리와 주의점ESLint의 코드 분석 방법ESLint 규칙 ESLint의 개념을 잘 모른다면 아래 글을 확인하자.htt
devyihyun.tistory.com
https://devyihyun.tistory.com/245
[JavaScript] naver ESLint 적용하기
목차eslint 버전 8naver eslint 적용해 보기 [eslint 버전 8]이전 게시글에서는 ESLint의 개념과 필요성에 대해 살펴보았다.// 개념 url이 글에서는 ESLint를 설치하고 설정해 보면서 어떻게 동작하는지 보겠
devyihyun.tistory.com
[ESLint와 Prettier 충돌 해결법]
ESLint에서도 Prettier가 처리하는 작업(들여쓰기, 줄바꿈, 따옴표 등)을 처리할 수 있다.
두 가지 모두 자바스크립트 코드에서 실행한다면 서로 다른 규칙으로 인해 에러가 발생한다.
최악의 경우 ESLint,Prettier 모두 만족하지 못하는 코드가 만들어질 수 있다.
- 규칙이 충돌되지 않게 선언하기
- 원인 : 코드에서 ESLint를 적용하는 작업과 코드의 포매팅을 하는 작업이 서로 다른 패키지에서 발생한다.
- 해결 : Prettier에서 제공하는 규칙을 어기지 않도록 ESLint에서는 해달 규칙을 끄기
- 파일 유형에 따라 도구 분리
- ESLint : 자바스크립트/타입스크립트
- Prettier : 마크다운, JSON 등
- eslint-plugin-prettier 활용
- prettier 규칙을 ESLint 플러그인으로 연동하여 충돌 최소화
이렇게 Prettier와 ESLint가 서로 관여하는 파일을 물리적으로 분리한다면 코드 충돌의 위험은 없애고 Prettier가 제공하는 규칙을 사용할 수 있다.
충돌을 해결하기 위해서는 ESLint 설정 중 Prettier와 충돌하는 부분을 비활성화하면 된다.
npm install --save-dev eslint-config-prettier
또는
npm install --save-dev eslint-plugin-prettier eslint-config-prettier
- eslint-config-prettier : ESLint에서 Prettier실행시킬 수 있는 플러그인
- eslint-config-prettier : Prettier와 충돌나는 ESLint 룰을 비활성화
충돌을 해결하기 위해서는 플러그인을 설치해야한다.

저는 ESLint와 Prettier 규칙이 서로 다르면 Prettier로 적용하도록 하겠습니다.
eslint.config.mjs에 eslintConfigPrettier, eslintPluginPrettierRecommended를 import 해줍니다.
import { FlatCompat } from "@eslint/eslintrc"
import eslintConfigPrettier from "eslint-config-prettier"
import eslintPluginPrettier from "eslint-plugin-prettier"
import { dirname } from "path"
import { fileURLToPath } from "url"
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const compat = new FlatCompat({
baseDirectory: __dirname,
})
const eslintConfig = [
...compat.extends("next/core-web-vitals", "next/typescript"),
{
rules: {
semi: ["error", "always"],
quotes: ["error", "double"],
},
},
eslintConfigPrettier,
eslintPluginPrettier,
]
export default eslintConfig

settings에서는 eslint가 아닌 prettierrc 파일을 보고 포매팅하라고 설정해 줍니다.

{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
<충돌 해결 확인하기>
prettier에서는 세미콜론을 붙이지 말고 ESLint에서는 세미콜론을 붙여라고 명시해 보자
서로 규칙이 달라 어떤 규칙을 따라야 할지 모른다.
| prettier | ESLint | |
| semi | false | always |

코드를 저장하면 세미콜론이 붙지 않는 것을 볼 수 있다.
eslint와 프리티어가 다른 설정을 가지고 있지만 충돌을 해결했다고 볼 수 있다.

잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊
댓글과 좋아요는 큰 힘이 됩니다!

[ 참고자료 ]
https://www.youtube.com/watch?v=RYTWkWOI_eg
https://www.youtube.com/watch?v=Be9q0k5BJ_s
https://www.youtube.com/watch?v=M6NVLZx2m5Y
https://github.com/naver/eslint-config-naver/blob/master/STYLE_GUIDE.md
eslint-config-naver/STYLE_GUIDE.md at master · naver/eslint-config-naver
Naver JavaScript Coding Conventions rules for eslint - naver/eslint-config-naver
github.com
'웹 개발 > JavaScript' 카테고리의 다른 글
| [JavaScript] naver ESLint 적용하기 (0) | 2025.11.12 |
|---|---|
| [JavaScript] ESLint의 구성요소 (0) | 2025.11.11 |
| [JavaScript] ESLint 이론 (0) | 2025.11.10 |
| [JavaScript] JSDoc이란? (0) | 2025.10.14 |
| [JavaScript] 자바스크립트 동기와 비동기 / 동기와 비동기 원리 (2) | 2023.12.07 |
