Package management (NPM vs YARN)

Falcon·2021년 3월 30일
1

javascript

목록 보기
1/28

이 글은 White Source Free Tools 사이트의 포스팅 글을 재해석한 & 요약한 글입니다.

🎯 Goal

nodejs 또는 javascript 진영에서 대표적인 package management tool

  • npm,
  • yarn
    둘의 차이점을 이해하고 취사 선택할 수 있다.
  • yarn-barry

NPM

npm의 최대 장점은 node.js 를 설치하면 자동으로 설정되있다는 것이다.
Intellij, Eclipse, VSCode 같은 IDE 에서 프로젝트 템플릿을 node.js 로 설정할 경우 자동으로 package.json, package-lock.json 이 생성되는 것을 경험해본 적 있지 않은가?

Yarn

yarn은 별도 설치가 필요한 대신, 보안성과 속도면에서 조금 더 우수하다.

다음은 디펜던시 설치 소요시간 벤치마크 테스트 결과다.

Yarn2 부터는 node_modules 에 dependency 저장을 더 이상 하지 않는다.

⚠️ Warning

한 프로젝트 내에서 npmyarn 을 같이 쓰면 충돌이 발생할 수 있다. 따라서 하나의 패키지 관리툴을 통일해서 사용하길 권장한다.

2022-07-17, 이제는 Yarn-Berry

기존 yarn v1 이나 npm 은 패키지를 node_modules 를 상위 디렉토리로 이동하며 .readdir() .stat() 메소드를 호출한다. 따라서 다음과 같은 단점이 있다.

  • 반복되는 시스템콜 함수 호출로 import, require 속도가 느리고
  • node_modules 용량도 비대해지며,
    => CI/CD 에 많은 소요시간을 잡아먹는 주범이다.
  • Phantom dependency

Yarn-Berry 기대 효과

  1. node_modules 생성 필요 X
  2. CI/CD 속도 향상
  3. 파일수 감소로 의존성 변경 감지 및 추가/삭제 속도 향상
  4. import, require 시간 단축

설정 방법

  1. $ yarn set version berry
  2. Remove node_modules directory
  3. Register scripts in package.json
  4. Update .gitignore
# If you're using Zero-Installs:
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

📝 결론

초기에는 속도, 보안성 때문에 yarn 이 라이징 스타로 npm 묵살시키나? 했지만


⭐ 현재 npm 버전은 7.7.6로 속도와 보안성 모두 yarn 과 거의 차이가 없어졌다.

많은 개발자들을 위해 끊임없이 개선해주는 이분들에게 감사하다.
결론은 '취향'차이다. 입맛에 맞는걸 쓰면된다.


🔗 Reference

profile
I'm still hungry

0개의 댓글