LHJ

I'm a FE developer.

npm VS Yarn, choosing the right package manager

09 Dec 2020 » node

npm VS Yarn, choosing the right package manager

npm과 Yarn은 모두 Node.js와 Javascript를위한 훌륭한 패키지 관리자입니다.
하지만 이미 npm이 있는데 왜 Yarn이 개발되었는지 궁금한 적이 있습니까?
패키지 설치 속도 저하와 같은 npm에서 직면한 주요 문제를 해결하기 위해 Facebook에서 구축했으며 npm에는 몇 가지 보안 문제도있었습니다.
이 기사에서는이 두 패키지 관리자를 비교하여 어느 것이 필요에 더 잘 맞는지 결정할 수 있습니다.

패키지의 병렬 설치

패키지가 설치되면 일련의 작업을 수행합니다.
npm에서 여러 패키지를 설치할 때 다른 패키지로 이동하기 전에 패키지가 완전히 설치 될 때까지 기다립니다.
즉, npm은 작업은 패키지별로 순차적으로 실행됩니다.
Yarn은 이러한 작업을 병렬로 설치하여 성능과 속도를 높입니다.

이를 테스트하기 위해 npm과 Yarn을 사용하여 react를 설치했고 결과를보고 놀랐습니다.
타이밍은 다음과 같습니다.

  • npm - 3.572초
  • Yarn - 1.44초

자동 잠금 파일 생성

npm과 Yarn은 모두 package.json 파일에서 프로젝트의 종속성과 버전 번호를 추적합니다.
종속성을 설치할 때마다 종속성의 버전이 버전 번호 앞에 ^로 시작될 수 있습니다.
즉, 다른 시스템에 모든 패키지를 설치하거나 수동으로 설치 명령을 실행할 때마다 패키지 관리자가 릴리스 된 최신 버전을 찾습니다.
최신 버전이 있으면 패키지 파일에 언급 된 버전이 아닌 자동으로 설치됩니다.
패키지의 자동 변경을 원하지 않는 경우이를 방지하는 두 가지 방법이 있습니다.
하나는 잠금 파일을 생성하여 매번 특정 버전 만 설치하고 다른 하나는 패키지 파일에서 ^를 제거하는 것입니다.

Yarn은 종속성이 추가되면 자동으로 yarn.lock 파일을 추가합니다.
npm에서 npm shrinkwrap 명령은 잠금 파일도 생성합니다.

그러나 차이점은 Yarn은 항상 yarn.lock 파일을 만들고 업데이트하는 반면 npm은 기본적으로 잠금 파일을 생성하지 않는다는 것입니다.
npm-shrinkwrap.json이있는 경우에만 업데이트됩니다.

npm v5.0은 lock.json 파일이라는 새 패키지와 함께 제공되며 npm-shrinkwrap 시스템을 진심으로 폐기했습니다.

이것은 아직 Yarn의 속도 수준에 도달하지 않았음에도 불구하고 설치 프로세스와 성능을 효율적으로 향상 시켰습니다.

보안

npm은 다른 패키지를 즉시 포함시킬 수있는 코드를 자동으로 실행하므로 보안 시스템에 여러 취약점이 발생합니다.
반면 Yarn은 yarn.lock 또는 package.json 파일에서만있는 파일을 설치합니다.
따라서 npm 패키지보다 더 안전한 것으로 간주됩니다.

Yarn vs npm commands

Commandnpmyarn
Install dependenciesnpm installyarn
Install packagenpm install [package]yarn add [package]
Install dev packagenpm install --save-dev [package]yarn add --dev [package]
Uninstall packagenpm uninstall --save-dev [package]yarn remove [package]
Updatenpm updateyarn upgrade
Update packagenpm update [package]yarn upgrade [package]
Global install packagenpm install --global [package]yarn global add [package]
Global uninstall packagenpm uninstall --global [package]yarn global remove [package]

최종 개요

둘 다 사용자에게 가능한 다른 방법으로 도움이되는 두 가지 다른 이점과 기능이 있습니다.
Yarn은 npm에 비해 더 효율적입니다.
그러나 Yarn은 많은 하드 디스크 공간을 차지합니다.
Yarn은 초반엔 나온지 얼마 안된 패키지였기 때문에 사람들이 좀 의심했지만, Yarn은 요즘 더 나은 안정성과 보안 업데이트로 인기를 얻고 있습니다.
그래도 npm 또한 개발자가 작업 중이므로 다른 패키지 관리자를 따라 잡으려고합니다.

읽어 주셔서 감사합니다!