npm vs yarn

김형주·2021년 8월 10일
0

참고링크
https://javascript.plainenglish.io/npm-vs-yarn-choosing-the-right-package-manager-a5f04256a93f

패키지매니저를 통해서 패키지 설치를 하다보면 명령어 관련해서 여러 이야기가 있다. 어디에서는 npm 로 설치하라고 되어있고, 어디에는 yarn을 사용하도록 되어있다. 이 차이는 다른 패키지매니저를 사용하는 것에서 시작한다. npm은 말그대로 Node Package Manager라는 패키지매니저를 사용하는 것이고, yarn은 yarn이라는 다른 패키지매니저를 사용하는 것이다. 단순히 설치 커맨드가 아니라 다른 패키지매니저다. 위의 페이지에 있는 글을 간단하게 번역해보면서 차이점을 이해하고자 한다.

Both npm and Yarn are great package managers for Node.js and Javascript. But have you ever wondered why Yarn was developed when there was already npm? It was built by Facebook to solve major problems they faced with npm, such as slower installation of packages and there were also a few security issues in npm. In this article, I’ll compare both these package managers, so that you can decide which one suits your needs better.

둘 다 Node.js나 JavaScript에 적합합니다. 그러나 왜 npm이 이미 있는데 yarn을 쓰는걸까 궁금해 본 적이 있나요? yarn은 페이스북이 npm과 직면한 문제들, 예를 들어 패키지가 더 느리게 설치되거나 몇 가지 보안 이슈가 있다는 이유들 때문에 만들어졌습니다.이 글은 두 패키지 매니저를 비교해서 당신이 어떤게 본인에게 더 맞는지 결정하도록 도와줄 것입니다.

1. 패키지 동시 설치

일반적으로 npm은 순차적으로 패키지들을 설치한다. 설치되면서 밑에 한줄씩 채워지는 것이 찔끔찔끔 보인다. 하나가 완전히 설치되면, 다음 것을 설치하고, 또 다음 것을 설치하는 방식으로. 패키지별로 순차적으로 이루어진다. yarn은 동시에 여러 개의 설치 과정을 동시에 실행한다. 그것 덕분에 설치 속도가 훨씬 빠르다.

  • npm - 3.572초
  • yarn - 1.44초

2. 자동잠금파일 생성

npm과 yarn은 둘다 package.json파일을 통해서 프로젝트의 dependencies와 그것들의 버전들을 추적한다. 새로운 dependencies를 설치할 때마다, 아마도 버전 숫자가 나오기전에 ^로 시작하는 것을 볼 수있다. 이 문자는 우리가 다른 개발환경에서 설치할 때마다, 혹은 수동으로 설치 명령어를 작동 시킬때마다, 패키지 매니저가 새로 릴리즈된 버전들을 확인한다는 것을 의미한다.만약에 새로운 버전이 나왔다면 자동으로 dependencies에 있는 버전이 아니라 새로운 버전이 설치된다. 패키지가 자동으로 새 버전을 설치하는 것을 막기 위한 두가지 방법이 있는데,

  1. 하나는 lock file(잠금파일)을 생성하는 것이다.
    그러면 특정 버전만 설치되게 할 수 있다.
  2. 한 가지는 package.json의 패키지 버전에서 ^문자를 제거하는 것이다.

yarn은 dependencies가 추가되면, 자동으로 yarn.lock이라는 파일을 추가한다.
npm에서는 npm shirinkwrap이라는 명령어로 lock파일을 생성할 수 있다.
그러나 두 가지의 차이점은 npm은 기본적으로 lock file을 만들지 않는다는 것이다. npm의 lock파일은 npm-shrinkwrap.json이 있어야만 업데이트가 된다. npm v5.0 이후부터는 이 거지같은 시스템을 버렸고, 이제 설치 과정이나 퍼포먼스 면에서 훨씬 나아졌다. yarn보다는 느리지만,

3. 보안 이슈

npm은 다른 패키지가 즉시 포함될 수 있도록 하는 코드를 자동으로 실행하므로 보안 시스템에 여러 취약점이 발생한다. 다양한 이유가 있겠지만 필요하지도 않은 코드까지 다 딸려올 수 있다.
yarn은 yarn.lock 또는 package.json 파일에서만 해당 파일을 설치한다. 따라서 npm보다 안전하다.

4. 명령어 차이

1. 전체 설치
npm - npm install
yarn - yarn

2. 특정 패키지 설치
npm - npm install [package name]
yarn - yarn add [package name]

3. dev 패키지 설치
npm - npm install --save-dev [package]
yarn - yarn add --dev [package]

4. 패키지 삭제 및 dev 패키지 삭제
npm - npm uninstall [package]
npm - npm uninstall --save-dev [package]
yarn - yarn remove [package]
yarn - yarn remove [package]

5. update
npm - npm update
yarn - yarn upgrade

6. 패키지 업데이트
npm - npm update [package]
yarn - yarn upgrade [package]

7. 글로벌 설치
npm - npm install [package] -g
yarn - yarn global add [package]

최종적으로

둘다 비슷하긴한데 기능적으로나 효율성으로 따졌을 때 yarn이 더 낫다고 판단이 든다. 그러나 yarn은 npm보다 많은 용량의 공간을 필요로 한다. 여러가지로 비슷하지만 더 빠르고 편하다니까 yarn을 써보는 것도 괜찮을 것 같다.

profile
만물에 관심이 많은 잡학지식사전이자, 새로운 도전을 꿈꾸는 주니어 개발자 / 잡학지식에서 벗어나서 전문성을 가진 엔지니어로 거듭나자!

0개의 댓글