포트폴리오(03 : 패키지 매니저 선택 NPM vs Yarn)

코드위의승부사·2020년 5월 2일
0

포트폴리오

목록 보기
3/6

npm이나 yarn이 패키지를 관리해주는 매니저라고 알고는 있었지만 어떤 패키지를 어떤 기준으로 선택해야하는지에 대해서는 모르고 사용해 왔었다.

이번 포트폴리오는 이전 프로젝트와 달리 프로젝트 진행속도에 지장이 있더라도, 궁금하지만 시간에 쫓겨 그냥 넘어갔던 기술부채들 없이 진행하는게 하나의 목표이므로 yarn과 npm에 대해서도 알아보고자 한다.

패키지매니저란?

패키지의 설치, 업데이트, 수정, 삭제를 안전하고 편리하게 관리하는 툴이다.

패키지란

라이브러리 - 코드의 작성을 위해 사용되는 코드의 묶음
패키지 - 코드의 배포를 위해 사용되는 코드의 묶음
: 컴파일한 소프트웨어의 바이너리, 환경설정(configuration) 관련정보, 의존(dependency)관련정보

✓ 패키지는 라이브러리를 포함할 수도 있으며, 일반적으로 라이브러리와 실행파일을 포함한다.

Dependency란

다수의 패키지들은 다른 패키지가 설치되어있어야만 제대로 동작
-> 기존 패키지를 제대로 동작시키기 위한 패키지들이 dependency
-> 패키지를 사용할 때 필요한 dependency들의 설치 필요
-> 설치하고 있는 패키지들의 dependencye의 설치가 필요한 경우
(dependecy의 dependency설치 => dependency hell)

=> 각 패키지가 자신의 dependency의 정보를 갖는다면, 사용하고자하는 패키지의 dependency를 패키지매니저를 통해 쉽게 설치할 수 있다.

패키지매니저의 역할

  • 패키지의 dependency 관리
  • 패키지의 보안관리(신뢰할 수 있는, 손상되지 않는)
  • 여러 패키지들을 기능에 따라 묶어 정리
  • 패키지 압축 해제
  • repos로 부터 패키지를 찾고 다운로드, 설치, 업데이트

NPM vs Yarn

Js의 대표적인 패키지매니저로 NPM(Node Package Manage)와 Yarn(Facebook이 개발한)가 있다.
NPM의 일관성, 보안, 빌드시 성능 등에 문제를 해결하기 위해 Facebook이 Yarn을 개발했다.

NPM과 Yarn의 차이

Performance

Yarn의 릴리즈 초기에는 Yarn의 성능이 뛰어났지만 현재는 성능부분의 차이는 거의 없다고 봐도 무방하다.

Security

NPM은 패키지들이 코드를 자동적으로 즉시 실행하는 것을 허용할 뿐만 아니라 의존성들도 즉시 자동적으로 실행된다.
이 특징이 편리함을 제공하기도 하지만, 보안성에 대해 몇가지 염려를 만든다.
(특히, 패키지 등록정책에서 심사가 필요없는 부분)
이와 다르게 Yarn은 오직 yarn.lock 혹은 package.json로 부터 설치된다.
구체적으로 말하자면 yarn.lock은 모든 장치들이 같은 패키지들을 설치하는 것을 보증해준다. 그러므로 패키지의 차이로 부터 발생하는 버그의 확률을 현저하게 감소시킨다.

References

profile
함께 성장하는 개발자가 되고 싶습니다.

0개의 댓글