[Concept Summary] npm, yarn

🏃Dekay (JuniorDeveloper)·2021년 9월 18일
0

Concept Summary

목록 보기
1/3
post-thumbnail

npm 🧐

  • npmnode packaged manager의 약자이다.
  • node는 node.js를 의미하고, packaged는 package로 만들어진 것들을 의미한다.
    * package모듈이라고도 불리는데 프로그램보다는 조금 작은 단위의 기능을 의미
  • manager는 뜻 그대로 관리자를 뜻하며, 이것을 토대로 합쳐보면 node.js로 만들어진 pakage관리해주는 툴 이라고 생각하자.

즉, 다운로드 한 모든 패키지를 캐시하기 때문에 동일한 패키지를 다시 다운로드 받을 필요가 없다.

yarn 🙄

  • npm배포가 쉽고, 종속성을 쉽게 해결할 수 있지만, 패키지가 중복으로 설치될 수 있는 문제가 있다.
  • 이러한 문제점들을 해결하기 위해 페이스북, 구글 tilde의 엔지니어 그룹에서 개발했다.
  • yarn의 특징은 다음과 같다.
  1. npm 보다 패키지 설치 속도가 빠르다.
  2. offline 모드가 가능하다.

다른 특징들 보다 특이한 특징은 offline 모드이다.
만약에 특정 이유로 인터넷에 연결되지 않은 내부 네트워크 호스트에 애플리케이션을 배포할 때 offline 모드는 필수 아닌가..? 왜 npm패키지 레지스트리 서버에 연결해서 패키지를 다운받는걸까..


npm과 yarn 차이점 ✨

1. 패키지 동시(병렬) 설치

  • 패키지를 설치할 때 일련의 작업을 수행하게 되는데, 일반적으로 npm은 순차적으로 패키지를 설치한다.
    즉, 여러 패키지를 설치할 때, 패키지완전히 설치될 때까지 기다린 후 다른 패키지를 설치한다.
  • 반면에 yarn패키지동시에 설치하기 때문에 퍼포먼스속도가 증가한다.

2. 자동 잠금 파일 생성

  • npmyarnpackage.json 파일을 통해서 프로젝트의 종속성(dependencies)버전(version) 을 관리한다.
  • 새로운 종속성을 설치할 때마다 종속성 버전^로 시작될 수 있다.
  • ^ 문자는 다른 개발 환경에서 설치하거나, 수동으로 설치 명령어를 사용할 때마다 패키지 매니저새로 릴리즈된 버전을 확인한다는 것이다.
    즉, 최신 버전이 있는 경우 패키지 파일에 언급된 버전이 아닌 최신 버전으로 자동으로 설치
  • 하지만, 패키지가 자동으로 새 버전을 설치하는 것을 원하지 않을 때 다음과 같은 방법을 사용하면 된다.
  1. Lock file(잠금 파일) 생성하여 한 번에 특정 버전만 설치하기
  2. package.json의 패키지 버전에서 ^ 문자 제거하기
  • 종속성이 추가되면 yarn은 자동으로 yarn.lock 파일을 자동으로 추가하고, npmnpm shirinkwrap 이라는 명령어로 lock 파일을 생성했었지만 npm v5.0 이후 부터는 lock.json 파일로 새로운 패키지와 함께 제공한다.
  • 이로 인해 설치 과정성능을 많이 향상시켰지만, 아직 yarn이 더 빠르다고 한다.

3. 보안

  • npm은 다른 패키지를 즉시 포함할 수 있는 코드를 자동으로 실행하기 때문에 보안 시스템에 여러 가지 취약성이 발생한다.
    즉, 필요하지 않은 코드까지 다 실행될 수 있다.
  • yarnyarn.lock, package.json 파일에 있는 파일만 설치하기 때문에 npm 보다 안전하다고 할 수 있다.

4. 명령어 비교

npm commandyarn commanddescription
npm inityarn init프로젝트 초기화
npm installyarn or yarn installpackage.json의 패키지 설치
npm install-save [package name]yarn add [package name]패키지를 프로젝트 종속성 수준으로 추가
npm install –save-dev [package name]yarn add -D[or –dev][package name]패키지를 프로젝트 개발 종속성 수준으로 추가
npm install –global [package name]yarn global add [package name]패키지를 전역 수준으로 추가
npm update –saveyarn upgrade프로젝트의 패키지 업데이트
npm run [script name]yarn [script name]package.json의 scripts에 지정된 명령 실행
npm uninstall –save [package name]yarn remove [package name]패키지 삭제
npm cache cleanyarn cache clean캐시 삭제

React를 시작하기 전에 패키지 관리자를 무엇을 쓸지 npmyarn 둘 중에 선택하기 위해 알아보았다.
yarnnpm보다 많은 용량의 공간을 필요로 하지만 npm보다 빠르고 효율적 이라고 생각이 들어서 yarn을 사용해봐야겠다.

end

profile
Believe you can & you're half way there 🙏

0개의 댓글