
pnpm 9 → 10 업그레이드 후 monorepo에서 eslint가 동작하지 않는 문제를 겪은 경험을 공유 합니다.
저희 회사는
pnpm를 패키지 매니저로 사용하고 있습니다.
최근pnpm 9에서pnpm 10으로 업그레이드를 진행했습니다.
업그레이드 이후, 기존에 잘 동작하던eslint가 더 이상 제대로 실행되지 않는 문제가 발생했습니다.
예시 프로젝트 구조
📂 root
├── 📦 apps
│ ├─ 📂 web1
│ └─ 📂 web2
└── 📦 packages
└─ 📂 @config
├── 📂 eslint-config
├── 📂 prettier-config
└── 📂 typescript-config
9버전에서는 패키지를 최상단에 설치를 하면 같은 경로 node_modules로 설치가 되었습니다.
그래서 각 앱과 패키지에서 로드 하는 곳에서는 문제가 없었지만
10버전 부터는 최상단으로 올라오지 않고 그대로 패키지 안에 들어 있는 문제가 생겼습니다.
문제 생기기전

문제가 생긴 후

이렇게 로드가 되면 결국 @config 안에만 eslint가 설치가 되어 사용할수가 없게 되어버립니다.
pnpm issues를 찾아보니 관련 이슈가 올라왔다.
pnpm/issues/8378
내용을 살펴보면 eslint의 9버전이 released가 되면서 eslint config가 flat로 바뀌어 더이상 모듈을 호이스트 안 하고 직접 찾아올 수 있게 된겁니다.
사이드 이펙트에대하서 논의가 있었지만 사라진 옵션을 직접 추가하면 된다는 댓글이 있었고 그대로 진행이 되었던겁니다.
public-hoist-pattern[]=*eslint*
public-hoist-pattern[]=*prettier*기존에도 사용하고 옵션이었던 3번으로 해결 하였고, 추후에 eslint9 버전을 적용할 때에 해결 하는것으로 결정하였다.
이번 문제는 pnpm의 버전을 업그레이드 하면서 생긴 문제라는 점을 인식을 하고는 있었지만 브레이크포인트에도 없어 찾기가 어려웠다.
혹시나 해서 gemini에게 물어보니 해당 링크를 찾아주었다. 여러모로 내 시간을 아껴준 것 같아 너무 감사히 쓰고 있다.
그리고 해당 이슈를 가서 보면 현재도 댓글이 계속 달리고 있는 것으로 보아 아직 사이드이펙트가 발생하는 듯 하다.
안정화 되고 나면 eslint9로 올려야지
버전업할때 이런 예상치못한 곳에서 터져서 ... 골치 아플때가 있죠 ,,ㅎㅎ
그래서 저는 앱이나 os업데이트도 늦게하는 편입니다 ㅋㅋㅋㅋ
이슈를 발견하시고 해결방법 공유해주셔서 감사합니다.
저도 무턱대로 린트를 올렸다가 특정 린트룰이 적용안되는 이슈가 있었습니다... 물론 아직 해결을 못했지만 이슈를 좀더 찾아봐서 해결해보겠습니다..!
eslint9로 인해 생긴 이슈군요. 다른 곳에서도 생길만한 이슈같아요. 다음에 eslint 관련 에러 났을때를 대비해서 기억해놔야겠어요. 잘 읽었습니다.
버전업을 할때마다 이런식으로 변경되는 부분들 때문에 오류가 자주터져서 너무 무섭더라고요.. 좋은 경험 공유해주셔서 감사합니다 :)