# 이제부턴 ESM 뿐입니다.

> Clean Markdown view of GeekNews topic #19157. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19157](https://news.hada.io/topic?id=19157)
- GeekNews Markdown: [https://news.hada.io/topic/19157.md](https://news.hada.io/topic/19157.md)
- Type: news
- Author: [carnoxen](https://news.hada.io/@carnoxen)
- Published: 2025-02-10T15:44:40+09:00
- Updated: 2025-02-10T15:44:40+09:00
- Original source: [antfu.me](https://antfu.me/posts/move-on-to-esm-only)
- Points: 14
- Comments: 0

## Summary

ESM 관련 기술이 발전하면서 모든 개발자가 ESM으로 전환하기를 권장합니다. 이미 Vite, ESLint, tsx 등 ESM 전환을 돕는 도구들이 많이 나와 있습니다. 두 방식의 상호 운용성 문제와 패키지 크기 증가 문제로 인해 새로운 패키지는 ESM으로 옮기는 것이 좋으며, 브라우저 대상 라이브러리와 CLI 프로그램에서도 ESM을 사용하는 것이 유리합니다. 의존성 분석기를 통해 라이브러리의 상태를 파악하고, 점진적으로 ESM으로 전환하는 계획을 세우기 바랍니다.

## Topic Body

이전까지만 해도 저는 모든 자바스크립트 라이브러리를 급격하게 ESM으로 바꾸는 방식에 부정적이었습니다. 현재 ESM 관련 기술과 비중이 나날히 발전했으므로, 저는 모든 개발자가 꼭 ESM으로 넘어오기를 바라고 있습니다. 이유는 다음과 같습니다.  
  
#### 이유  
* 준비된 도구  
    * Vite, ESLint, tsx 등 ESM으로 넘어가는 데 도움을 줄 수 있는 많은 도구가 나왔습니다.  
    * 기존 라이브러리 방식(CJS)이 최신 방식인 ESM에 의존하는 것은 쉽지 않으므로 미래 발전을 위해서 앞으로 나가야 합니다.  
    * 최신 Node.js에서 ESM 라이브러리를 `require()` 함수로 불러오는 방법이 개발되어 ESM을 더 쉽게 적용할 수 있습니다.  
* 이중 지원 문제  
    * 두 방식의 설계 차이가 현저하기 때문에 상호 운용성이 크게 떨어집니다.  
    * 사용자가 ESM 지원 여부를 일일이 확인해야 하는 번거로움이 생깁니다.  
    * 두 방식을 지원해야 하므로 패키지의 크기가 매우 커집니다.  
  
#### 언제 바꿀까요?  
* 새로운 패키지는 무조건 ESM으로 옮기세요.  
* 브라우저를 대상으로 하는 라이브러리의 경우 더 가벼운 번들을 만들 수 있습니다.  
* CLI 프로그램에도 이를 사용하는 사람들이 ESM으로 자연스럽게 넘어올 수 있습니다.  
* 하지만 그 전에, 기존에 의존하고 있는 라이브러리의 상태와 사용자의 요구사항을 아는 것이 중요합니다.  
  
#### 얼마나 바꿔야 하나요?  
라이브러리의 의존성 파악을 위해 [의존성 분석기](https://github.com/antfu/node-modules-inspector)를 만들었습니다. 의존하는 라이브러리의 상태 및 ESM으로 바꿀 경우의 영향까지 볼 수 있습니다.  
  
#### 앞으로 할 일  
저는 제가 관리하는 패키지를 점진적으로 ESM으로 전환하고, 종속성을 자세히 살펴볼 계획입니다. 또한 `node-modules-inspector`를 이용한 흥미로운 아이디어도 많이 준비되어 있어 더 유용한 통찰력을 제공하고, 앞으로도 최선의 방식을 찾는 데 도움이 될 것입니다.  
  
저는 더 가볍고, 탄력적이며, 최적화된 JavaScript/TypeScript 생태계를 기대하고 있습니다. 도움이 되었기 바랍니다.

## Comments



_No public comments on this page._
