본문으로 이동
디자인 컴포넌트 라이브러리를 ‘실제 사용 방식’에 맞게 다시 설계한 이야기
문서

디자인 컴포넌트 라이브러리를 ‘실제 사용 방식’에 맞게 다시 설계한 이야기

권가은 컬리 · 컬리 기술 블로그

원문 보기

AI 핵심 요약

React 기반 디자인 시스템 라이브러리 Kitchen은 UMD·CommonJS 혼합 빌드와 전체 컴포넌트 re-export 구조 때문에 일부 컴포넌트만 사용해도 전체 코드가 번들에 포함됐고, 개발·테스트 환경도 복잡해졌습니다. 사용처가 웹 번들러 기반 React 환경으로 바뀐 점을 반영해 ESM-only 배포와 명시적 exports를 도입하고, 28개 컴포넌트 패키지를 단일 패키지로 통합했으며 공통 디자인 토큰은 foundation으로 분리했습니다. 그 결과 빌드 시간은 60.93초에서 6.94초로 줄고, 측정 서비스의 공통 번들에 포함된 Kitchen 코드는 1.61MB에서 162.5KB로 감소했습니다. 구조 개선은 기술 선택 자체보다 실제 사용 방식과 개발자의 작업 흐름에 맞춰 라이브러리를 설계하는 것이 중요하다는 점을 보여줍니다.

  • 라이브러리의 패키지 경계와 배포 단위는 실제 소비 방식에 맞춰야 한다.
  • 트리셰이킹을 기대한다면 번들러가 의존성을 정적으로 분석할 수 있도록 ESM과 명시적인 exports를 제공한다.
  • 빌드 산출물 대신 소스 코드에서 컴포넌트 간 의존성을 표현하면 Storybook과 테스트에서 직접 다루기 쉬워진다.
  • 공통 디자인 토큰은 여러 시스템에서 반복 관리하지 않도록 단일 책임의 foundation으로 분리할 수 있다.

소개

디자인 컴포넌트 라이브러리 빌드 및 구조 개선기

비슷한 학습 자료

문서 박건영

왜 토스증권 PC의 그리드 레이아웃을 왜 직접 구현하게 되었는지, 그리고 어떻게 만들어져 있는지를 이제부터 소개해 드릴게요.

프론트엔드 알고리즘 · 자료구조

문서 강민우

이번 아티클에서는 @use-funnel 라이브러리의 구현 과정과 방법에 대해서 더 자세히 살펴볼게요.

프론트엔드 개발 도구

문서 권선영

단계별 상태 관리 라이브러리 @use-funnel을 어떻게 만들게 되었는지 소개드릴게요. 문제의식을 공유하고 해결방법을 찾으려는 분들께 도움이 되면 좋겠어요.

프론트엔드 개발 도구

문서 임지훈

여러분은 라이브러리를 만들어봤거나, 만들어야겠다고 생각해본 적이 있나요? 이번에는 프론트엔드 개발 환경에서 높은 범용성을 나타내는 용어 중 하나인 “Framework Agnostic”에 대해 이야기 해보려고 합니다.

웹 개발 프론트엔드

문서 임진호

우리는 왜 공통 라이브러리를 만들기 시작했나

개발 · 프로그래밍 기타

문서 김효원

React 이해하기

문서 김효원

React의 기본 개념에 대해 알아봅시다

프론트엔드