Pulse 게시 ·

토스뱅크, 사내 공통 패키지를 ESM 단일 형식으로 전환

토스뱅크가 사내 공통 패키지의 ESM·CommonJS 이중 빌드를 없애고 ESM만 제공하도록 전환했다. 기술그룹에 따르면 공유 상태가 나뉘거나 타입 연결이 끊기는 문제를 줄이기 위한 조치다. Node.js 22.12.0부터 지원하는 require(esm)을 활용하되, 불러오는 모듈과 의존성에는 최상위 await가 없어야 한다.

내용·출처 업데이트 · 2026. 10. 15. 오후 6:31

import와 require가 서로 다른 구현 파일을 읽으면 패키지를 한 버전만 설치해도 React 컨텍스트·캐시·공유 상태가 둘로 나뉠 수 있다.

외부 라이브러리의 CJS 경로에 타입 파일이 연결되지 않으면 타입 검사에서 오류를 놓칠 수 있다고 설명했다.

사용처를 파악할 수 있는 사내 환경에서 도구 버전과 설정을 맞추고, 모듈 로딩과 타입 검사를 확인하며 전환했다.

전환 후 두 구현의 코드·타입을 관리하는 부담과 실제 로딩 경로를 추적하는 일이 줄었다고 밝혔다.

지원 환경을 함께 조정할 수 있는 사내 패키지에서 적용한 선택으로, 구버전 Node.js까지 지원하는 공개 라이브러리는 이중 형식이 계속 필요할 수 있다.

원문