본문으로 이동
패키지 매니저의 과거, 토스의 선택, 그리고 미래
문서

패키지 매니저의 과거, 토스의 선택, 그리고 미래

박서진 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

패키지 매니저는 package.json의 버전 범위를 실제 버전으로 확정하고, 파일을 내려받아 코드에서 참조할 수 있게 연결한다. 이 과정은 Resolution·Fetch·Link로 나뉘며, Link 단계에서 npm은 node_modules에 파일을 배치하고 pnpm은 하드 링크를, Yarn PnP는 JavaScript 맵으로 의존성을 찾는다. 토스는 Yarn의 모듈화된 구조와 PnP의 엄격성·성능, 플러그인 확장성을 이유로 Yarn을 유지하되, 저장소와 Git 관리 부담을 줄이기 위해 Zero-install은 기본적으로 끄는 방향을 택했다. 브라우저와 Deno의 Import Map처럼 URL 기반으로 의존성을 연결하는 표준도 소개하며, 현재 Node.js 환경에서는 패키지 매니저가 여전히 필요하다고 설명한다.

  • Resolution은 의존성 트리 전체의 버전을 확정하고 lock 파일에 기록한다.
  • Link 방식은 성능과 호환성의 균형을 고려해 선택한다. npm은 node_modules에 파일을 배치하고, pnpm은 하드 링크를, Yarn PnP는 의존성 맵을 활용한다.
  • PnP는 선언되지 않은 의존성 사용을 막아 의존성 관리를 엄격하게 하지만, Node.js 시작 시간과 node_modules 호환성에 부담이 있다.
  • Zero-install은 PnP와 별개로 설치 파일까지 Git에 포함하는 운영 방식이며, 저장소 크기와 Git 관리 비용을 따져 도입해야 한다.
  • 브라우저와 Deno의 Import Map은 패키지 이름을 URL에 연결해 의존성을 불러오는 방식이다.

소개

토스는 왜 패키지 매니저로 Yarn을 선택했을까요? 이번 라이트닝 토크에서는 JavaScript의 패키지 매니저, 동작 방식, 그리고 토스의 선택과 앞으로의 방향성에 대해 이야기해 보려고 해요.

비슷한 학습 자료

문서 박서진/이다용

안녕하세요, 토스 Frontend Engineering Head 박서진, 토스뱅크 Frontend Developer 이다용입니다. 오늘은 토스의 작은 유틸리티 함수 라이브러리로 시작한 es-toolkit이 어떻게 일주일에 2천만 회 이상 다운로드되고, Yarn이나 Recharts 같은 핵심 라이브러리에서도 사용되었는지 그 성장한 과정을 소개해 드릴게요. [서진] es-toolkit의 시작 프론트엔드 개발자로서 throttle, debounce 나 uniq 같은 함수들이 자주 필요해요. 그런데 지금까지는 자신 있게 이러한 유틸리티 함...

프론트엔드 프로그래밍 언어

문서 최지민

사업개발, 영업으로 시작해서 풀스택, 프론트엔드, 서버 개발까지 다 해보신 지민님의 이야기를 들려드립니다. 끝 없는 도전과 변화, 지민님은 모두 계획했을까요?

문서 조유성

오늘은 UX Engineering Team Leader 조유성님의 이야기를 들어봤어요. 문과생에서 Full Stack Engineer, Frontend Engineer, UX Engineer에서 팀 리더까지 맡으신 유성님의 이야기 오늘 들려드릴게요.

문서 토스 프론트엔드 챕터

프론트엔드 개발에서 프레임워크는 정말 필수 일까요? 토스 정진우, 조유성 님이 전하는 프레임워크와 라이브러리의 정의부터 실제 업무에서의 활용법까지, 실용적인 예시를 통해 함께 알아보시죠!

프론트엔드

문서 박서진

토스 프론트엔드 레포지토리 대부분에서 사용하고 있는 패키지 매니저 Yarn Berry. 채택하게 된 배경과 사용하면서 좋았던 점을 공유합니다.

프론트엔드 개발 도구

문서 박서진

토스에서 프론트엔드 개발자가 일하는 방법과 맡고 있는 역할에 대해 소개드립니다.

프론트엔드