본문 바로가기
C.W.K.
Stream
Lesson 01 of 05 · published

Yarn Classic과 Yarn Berry를 구분해

~10 min · yarn, overview, javascript

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

Yarn은 2016년 Facebook, 현재의 Meta가 당시 npm의 느린 설치와 lockfile 재현성 문제를 해결하려고 만들었어. 몇 년 뒤 npm이 따라잡는 동안 Yarn은 두 계열로 나뉘었지. 원조인 Yarn Classic(v1)은 이제 유지보수 전용이고, Yarn Berry(v2~v4)는 같은 팀이 급진적인 새 생각을 담아 거의 전부 다시 만든 도구야. 지금 새 프로젝트에서 Yarn을 고른다는 말은 Berry를 뜻하며 Classic을 뜻하지 않아.

Berry의 대표 기능은 Plug'n'Play(PnP)야. node_modules를 완전히 없애고 패키지를 .yarn/cache/의 zip 파일로 보관하며, 생성된 .pnp.cjs 하나가 모든 import를 올바른 zip 항목으로 연결해. 수만 개 node_modules 파일을 훑지 않아도 되고 phantom dependency도 사라져 설치 시간이 크게 줄어. 다만 PnP를 모르는 일부 IDE나 오래된 bundler는 별도 플러그인이 필요해.

또 다른 핵심은 zero-installs야. .yarn/cache/를 Git에 포함하면 새 팀원은 clone 직후 코드를 실행할 수 있고 CI도 yarn install을 건너뛰어. Git 저장소가 커지는 대가가 있지만 설치 시간이 CI를 지배하는 팀이라면 5~10배 빨라질 수 있어.

현재 계열인 Yarn v4는 Node 18 이상이 필요해. 이전에 별도였던 플러그인을 핵심에 합쳤고, v3보다 최초 설치가 3.9배 빠르며, Prolog 기반 제약 엔진을 JavaScript 기반으로 바꿨어. JavaScript 패키지 관리자 가운데 가장 야심차고 운영 철학이 뚜렷한 도구야.

Code

Yarn Classic과 Berry 한눈에 비교·text
                       Yarn Classic (v1)       Yarn Berry (v4)
  Status               Maintenance-only         Active development
  node_modules         Yes                      Optional (PnP 디폴트)
  Install 모델         npm 같음                 Plug'n'Play
  Lockfile             yarn.lock                yarn.lock (다른 형식)
  Plugins              External                 Built-in
  CI install flag      --frozen-lockfile        --immutable
  새 프로젝트?         No                       YES
  Constraints engine   None                     JS 기반 (v4) / Prolog (v3)

External links

Exercise

Yarn을 쓴 적이 있다면 'yarn --version'으로 계열을 확인해. 1.x는 Classic이고 2.x, 3.x, 4.x는 Berry야. 새 프로젝트에서는 Berry의 운영 방식을 배울 의지가 있으면 Berry를, 그렇지 않으면 pnpm이나 npm을 고르면 돼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.