- 자바스크립트 런타임 환경인 노드(Nodes.js)의 패키지 매니져에 대해서 알아보자.
- 대표적인 패키지 매니져 npm , yarn, yarn berry에 대해서 알수 있다.
Node Package Manager로, Node의 기본 패키지 매니져 입니다.
이러한 패키지 매니져가 없다면, 저희는 github에 접속해서 소스코드를 다운로드 받아야 합니다. 또 버전 변경시에 다시 접속해서 소스코드를 재 다운로드를 받아서 재 업로드 해줘야 됩니다..ㅎ
패키지 매니져의 탄생으로 관리의 문제가 개선되었지만, 완벽한 방법이란 없는 것.. 사용하다 보니 문제점이 발견이 되고, 이로 인해, npm , yarn, yarn berry,, 이렇게 발전을 하게됩니다
1) 시멘틱 버저닝
시멘틱 버저닝 이라는 기법을 사용하여 모듈의 버전을 나타냅니다.시멘틱 버저닝 : 1.0.0처럼 세가지 숫자로 구분하고 각 자리에 현재 버전이 이전버전과 어떤 관계가 있는지 암시하는 방법입니다. 2) 캐럿(^) 기호
3) 버전 불일치
따라서, npm install 명령어로 모듈을 설치하면 최신버전을 다운받게 됩니다.
버전 변경이 허용되기 떄문에
모듈간의 버전이 일치하지 않는 문제가 발생할 수 있다.
npm install 명령어를 통해 처음부터 설치하는 사람과의 설치순서가 달라질 수 있다. npm은 개발자들이 어떤 순서로 모듈을 추가했는지 알 수 없기 때문에 모듈 이름을 사전순서대로 정렬하여 순차적으로 설치한다.
[npm도 버전문제에 대한 개선방향을 내놓다!]
npm shrinkwrap시간이 지나고 npm도 많은 부분이 개선되었습니다. package-lock 파일을 통해서 버전을 고정하고, 속도면에서도 yarn과 큰 차이가 없는 수준까지 따라왔습니다.

npm에서 구성하는 node_modules폴더는 매우 큰 용량을 차지 합니다.
npm은 이 무거운 폴더를 경량화시키기 위해 호이스팅을 도입하였습니다.
용량을 줄이는 가장 간단한 방법은 중복을 제거하는 것입니다.
node_modules의 중복된 패키지를 최소화하기 위해 각 패키지가 의존하는 패키지들을 최상단으로 끌어올립니다. 이렇게 되면 중복된 패키지가 최상단에 하나만 존재하게 되어 불필요한 중복을 제거할 수 있게 됩니다.

유령 의존성이라고 부릅니다. 비효율적인 설치와 유령 의존성 등은 여전히 npm과 yarn에게 숙제로 남아 있었습니다. [참고자료]