이전까지만 해도 저는 모든 자바스크립트 라이브러리를 급격하게 ESM으로 바꾸는 방식에 부정적이었습니다. 현재 ESM 관련 기술과 비중이 나날히 발전했으므로, 저는 모든 개발자가 꼭 ESM으로 넘어오기를 바라고 있습니다. 이유는 다음과 같습니다.

이유

  • 준비된 도구
    • Vite, ESLint, tsx 등 ESM으로 넘어가는 데 도움을 줄 수 있는 많은 도구가 나왔습니다.
    • 기존 라이브러리 방식(CJS)이 최신 방식인 ESM에 의존하는 것은 쉽지 않으므로 미래 발전을 위해서 앞으로 나가야 합니다.
    • 최신 Node.js에서 ESM 라이브러리를 require() 함수로 불러오는 방법이 개발되어 ESM을 더 쉽게 적용할 수 있습니다.
  • 이중 지원 문제
    • 두 방식의 설계 차이가 현저하기 때문에 상호 운용성이 크게 떨어집니다.
    • 사용자가 ESM 지원 여부를 일일이 확인해야 하는 번거로움이 생깁니다.
    • 두 방식을 지원해야 하므로 패키지의 크기가 매우 커집니다.

언제 바꿀까요?

  • 새로운 패키지는 무조건 ESM으로 옮기세요.
  • 브라우저를 대상으로 하는 라이브러리의 경우 더 가벼운 번들을 만들 수 있습니다.
  • CLI 프로그램에도 이를 사용하는 사람들이 ESM으로 자연스럽게 넘어올 수 있습니다.
  • 하지만 그 전에, 기존에 의존하고 있는 라이브러리의 상태와 사용자의 요구사항을 아는 것이 중요합니다.

얼마나 바꿔야 하나요?

라이브러리의 의존성 파악을 위해 의존성 분석기를 만들었습니다. 의존하는 라이브러리의 상태 및 ESM으로 바꿀 경우의 영향까지 볼 수 있습니다.

앞으로 할 일

저는 제가 관리하는 패키지를 점진적으로 ESM으로 전환하고, 종속성을 자세히 살펴볼 계획입니다. 또한 node-modules-inspector를 이용한 흥미로운 아이디어도 많이 준비되어 있어 더 유용한 통찰력을 제공하고, 앞으로도 최선의 방식을 찾는 데 도움이 될 것입니다.

저는 더 가볍고, 탄력적이며, 최적화된 JavaScript/TypeScript 생태계를 기대하고 있습니다. 도움이 되었기 바랍니다.