무턱대고 ESLint 최신버전 설치하면 고생하는 이유 v9.2.0
date
May 8, 2024
slug
eslint-920-is-not-ready
status
Published
tags
frontend
React
ESLint
summary
무슨 라이브러리든 최신버전만 쓰면 고생한다.
type
Post
심심할 때 마다 자주 사용하는 기능이다. (신입만 가능한 스킬!)
현재 패키지에서 사용중인 모든 라이브러리들의 최신 버전을 확인해주고 무려 자동으로 업그레이드해준다!
어느날 내 코드의 모든 린팅을 담당하는 eslint가 9.2.0 버전까지 왔다는 사실에 놀라며 일단 바로 업그레이드를 해봤다.
근데 에러 로그를 자세히 보니
.eslint.rc
에서 extends
가 지원되지 않은 것 같다.분석에 들어가보기로 했다.
일단 메뉴얼도 보지 않은 내 책임도 있으니 공식문서를 확인하러 갔다.
항목별
eslint
9.x 버전에서 바뀐 것들을 프론트엔드 개발자 입장에서 설명해보겠다.1. .eslint.rc
파일은 eslint.config.js
로 대체됨
flat config라는 새로운 config 포맷이 등장했다. eslintrc를 쓰면 따로 커스텀 경로를 설정하지 않는 이상 config파일이 없는 것으로 간주한다.
2. flat config 등장 (from v8.23.0)
위에 말했듯 eslint.config.js라는 새로운 설정 컨벤션에서 생긴 포맷은 아래와 같이 생겼다.
languageOptions 때문에 새로운 config가 이해가 안될텐데 아래 코드에서 use case를 확인해보자
바뀐 점을 요약해보자면
- 기본적으로 배열이다. 한 json에 한
rule
,plugin
,files
(파일타입),language
옵션(파서)등을 설정할 수 있다.
- 파서옵션과 기존 자주 사용하던
env
설정은languageOptions
로 통합됐다.
- plugin들, typescript-eslint, eslint-plugin-import는 import해서 사용한다. (기존보다 config 자체의 오류 가능성을 해결한다.
jsx
,tsx
에는 hook rule, ts rule을,ts
에는 ts rule만, 일정 프로젝트에서는 rule 제거 등 여러 rule을 세분화하여 관리할 수 있다는 면에서 상당히 고민한 흔적이 본인다.
3. react에서 eslint 9.2.0은 쓰지 말라.
eslint-plugin-react
, eslint-plugin-react-hooks
은 프론트엔드 개발자가 사랑하는 (없으면 죽는) 플러그인이다. react plugin flat config 사용법 자체를 수소문 끝에 찾아봤다. (구글 검색시 ‘어쩌고 어쩌고 플러그인 flat config’라고 치면 원하는 결과가 많이 나온다.react plugin import하면 위의 플러그인들과 같이 recommended rule이 타입으로 나온다!
위 예시처럼 그냥 추가 해보면 수많은 오류가 발생하는데…
일부 플러그인 구조가 옛날 것인가 보다! 싶었지만,
이미 이 이슈로 사람들의 오류 토로가 끊이지 않았는데
결국 eslint 9.x 버전에서 flat config를 대응하는 react plugin은 에러만 뿜고 끝나는듯 하다.
eslint-plugin-react
jsx-eslint • Updated Sep 25, 2024
readme에 나오는 방법도 오류를 뿜습니다.
어느 버전이든 안정화된 상태에서 올라가는 것을 추천한다.