Community

JavaScript 생태계에서 코드를 정적검사하는 Lint 도구인 ESLint의 새로운 config 시스템에 대한 글로 3개의 글로 이어져 있습니다. 1편에서는 왜 새로운 config를 필요로 하게

JavaScript 생태계에서 코드를 정적검사하는 Lint 도구인 ESLint의 새로운 config 시스템에 대한 글로 3개의 글로 이어져 있습니다. 1편에서는 왜 새로운 config를 필요로 하게 되었는지 과정이 나와있고 2편에서는 새 시스템인 flat config가 어떤 목표를 가지고 있는지를 설명합니다.(3편은 그냥 개발자 프리뷰로 써볼 수 있다는 얘기입니다.) 2013년부터 만들어진 ESLint의 초기 config인 `.eslintrc`는 아주 간단했는데 이후 요구사항을 맞추면서 점진적으로 추가하다보니 지금은 제어가 안될 정도로 복잡도가 심각해 졌다고 합니다. .eslintrc외에도 eslintrc.json, eslintrc.yml도 생기고 eslintrc.js도 추가하게 되었는데 eslintrc.js 정벅 config 파일이 아니라 코드였기 때문에 다른 형실과는 호환이 안되는 문제가 생겼고 extends를 통해 다른 사람이 만들 설명을 공유해서 활용할 수 있게 했는데 npm이 v3에서 peerDependencies를 기볼 설치 안하면서 문제가 되어 require()를 재구현까지 했지만 생턔게는 이미 엉망이 되었고 overrides와 extends가 섞이면서 복잡도는 더욱 커졌다고 합니다. 지금은 config 시스템을 제대로 이해하는 사람이 아무도 없는 상황이라 새로운 config 시스템이 필요해졌고 새 config는 flat config라 부른다고 합니다. 단순한 시스템에서 요구 사항을 하나씩 추가하면서 복잡해 지는 부분은 꽤 자연스럽게 발생할 수 있는 부분이라서 각 개별적인 변경을 할 때는 합리적이었지만 수년이 쌓이면서 복잡도가 심해진 걸로 보입니다. 아마도 생태계 전반적으로 쓰이다 보니 하위호환성을 유지하기 위해 중간에 기술부채를 청산 못하고 이번에 하게 된거 같습니다.

알림

알림이 없습니다