목록 보기
토스뱅크가 패키지를 관리하는 방식 #1: 패키지를 ESM으로만 제공하기로 했어요
프론트엔드

토스뱅크가 패키지를 관리하는 방식 #1: 패키지를 ESM으로만 제공하기로 했어요

토스
토스
2026년 10월 15일

두줄요약

ESM·CJS 이중 배포에서 발생하는 상태 분리와 타입 누락 문제를 분석했습니다. 사내 패키지를 ESM-only로 전환해 관리와 디버깅 복잡도를 줄였습니다.

문제 상황

  • ESM·CJS 이중 배포에서 import와 require()가 서로 다른 구현 파일 로드
  • React 컨텍스트·캐시 등 공유 상태의 이중화와 타입 탐색 실패 위험

원인 분석

  • exports의 import·require 조건에 따른 별도 모듈 실행
  • TypeScript 설정이 CJS 경로를 선택할 때 타입 파일 부재로 외부 타입의 any 전파 가능성

선택 이유

  • Node.js 22.12.0의 require(esm) 지원으로 CJS 사용처의 ESM 로드 가능
  • 사내 패키지의 예측 가능한 사용 환경과 표준 모듈 시스템·트리 셰이킹 이점

성능/운영 포인트

  • ESM-only 전환으로 이중 실행 코드와 타입 연결 관리 부담 축소
  • 사용처의 로드 구현·타입 경로 추적 및 디버깅 복잡도 감소
  • require(esm) 사용 시 ESM과 의존 모듈의 최상위 await 부재 필요

토스 계열사 채용156건

채용 사이트에서 전체 보기

다음 읽기

같은 회사의 연관 글

es-toolkit: How a Small Internal Library Became a Global Project

Toss는 lodash의 한계를 보완한 현대적 유틸리티 라이브러리 es-toolkit을 만들고 OSS로 확산시켰습니다. 호환 레이어와 성능 개선으로 대형 프로젝트 채택과 주간 2천만 다운로드를 달성했습니다.

토스
토스
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...