Node.js 라이브러리 배포 파이프라인에 플러그인 시스템 도입기
장지훈 · 토스 · 토스 기술 블로그
소개
100개가 넘는 라이브러리를 관리하면서 마주했던 문제들을 플러그인 시스템으로 풀어낸 방법을 공유합니다.
AI 핵심 요약
100개가 넘는 라이브러리와 여러 모노레포를 관리하면서 배포 CLI에 레포별 옵션이 계속 추가되어 공통 도구가 복잡해지는 문제가 생겼습니다. 이를 해결하기 위해 배포 사이클의 이벤트와 전달 데이터를 정의한 Node.js 플러그인 시스템을 도입해, 공통 배포 라이브러리를 바꾸지 않고도 레포별 기능을 구현하고 설정할 수 있게 했습니다. CodeGen 검증, Public API 사용 현황 수집, 패키지 메타데이터 경량화, 의존성 버전 자동 조정 등을 플러그인으로 제공했습니다. 특히 API가 어느 버전부터 제공됐는지 추적해 실제 사용 API에 필요한 의존성 버전을 맞추면서, 모노레포와 서비스 환경 간 버전 차이로 생길 수 있는 문제를 줄였습니다.
- 배포 과정의 확장 지점은 이벤트 훅으로 정의하고, 플러그인이 필요한 시점의 데이터만 받도록 설계할 수 있습니다.
- 플러그인별 설정을 레포에서 관리하면 공통 CLI를 수정하거나 업데이트하지 않고도 요구사항을 적용할 수 있습니다.
- 모노레포에서는 워크스페이스가 최신 패키지를 참조해도 실제 배포 환경의 의존성 버전이 낮을 수 있으므로 별도 검증이 필요합니다.
- Public API가 추가된 버전을 추적하면 사용 중인 API에 맞춰 의존성 버전을 자동으로 올릴 수 있습니다.
비슷한 학습 자료
라이브러리 버전관리 #npm #cdn
if kakao · YouTube
모노리포 희망편, 절망의 리포가 희망의 리포로 부활하기까지 걸린 1년
박서진/박성범 · 토스 기술 블로그
200여개 서비스 모노레포의 파이프라인 최적화
정석호 · 토스 기술 블로그
여러 프레임워크에서 사용할 수 있는 라이브러리 만들기
임지훈 · 토스 기술 블로그
CommonJS와 ESM에 모두 대응하는 라이브러리 개발하기: exports field
장호승 · 토스 기술 블로그
JSCodeShift로 기술 부채 청산하기
박지우 · 토스 기술 블로그