최근 웹 및 앱 개발 커뮤니티에서 날짜와 시간을 효율적으로 다루는 새로운 TypeScript 유틸리티 라이브러리 'date-light'가 주목받고 있습니다. 이 라이브러리는 3.11KB(minzipped 기준)라는 놀랍도록 작은 크기로, 개발자들이 일상적으로 사용하는 핵심 날짜 처리 기능 39가지를 제공하며, 불필요한 기능들을 과감히 제외하여 번들 크기와 성능을 최적화한 것이 특징입니다.
date-light는 날짜 포맷(format), ISO 문자열 파싱(parseISO), 날짜 더하기/빼기(addDays, subMonths), 두 날짜 간의 차이 계산(differenceInDays), 날짜 비교(isBefore, isAfter), 그리고 특정 요일/월/년의 시작과 끝을 찾는(startOfWeek, endOfMonth) 등 웹/앱에서 가장 자주 쓰이는 기능들을 포함합니다. 모든 함수는 원본 Date 객체를 변경하지 않고 새로운 Date 객체를 반환하거나 값을 계산하여 데이터 불변성(immutability)을 유지합니다. 런타임 의존성이 전혀 없으며, TypeScript 타입과 ESM/CJS 엔트리포인트를 모두 지원하여 다양한 개발 환경에 쉽게 통합될 수 있습니다.
기존의 유명 날짜 라이브러리들은 로케일(locale), 타임존(timezone) 데이터베이스, 기간(duration) 객체, 플러그인 시스템 등 방대한 기능을 제공하지만, 대부분의 애플리케이션에서는 이 중 극히 일부만 사용됩니다. date-light는 이러한 오버헤드를 줄여 번들 사이즈를 대폭 감소시켰습니다. 예를 들어, date-fns에서 비슷한 20개 함수를 가져오는 경우보다 약 5.9배 작아, 특히 번들 크기에 민감한 프론트엔드 환경이나 경량 애플리케이션 개발에 큰 이점을 제공합니다. 이는 개발자들이 필요한 기능만 선택적으로 사용하여 애플리케이션의 로딩 속도를 높이고 사용자 경험을 개선하는 데 기여할 것입니다.