npm이란?
npm은 자바스크립트의 패키지 관리자입니다. node.js 진영에서 많이 씁니다. 파이썬의 poetry, 자바의 maven과 비슷한 역할을 하는 친구입니다.
npm을 node package maneger의 약자로 오해할 수 있는데, 여기서 n은 node를 의미하는 것이 맞지만, pm은 다른 용어의 약어입니다. 바로 pkgmakeinst라는 bash 유틸리티의 약어입니다.
npm으로 패키지를 설치하면 프로젝트 루트에 package.json, package-lock.json 파일과 node_modules 폴더가 생성됩니다. package.json에는 설치된 dependency들에 대한 허용 가능한 버전들의 범위 목록, 예를 들어 "recharts": "^2.9.3"이 정리되어 있고, package-lock.json에는 실질적으로 설치된 정확한 버전 정보가 담겨 있습니다. 그리고 node_modules에는 실제로 설치된 패키지들이 들어가 있습니다.
pnpm이란?
pnpm도 역시 자바스크립트의 패키지 관리자입니다. npm이라는 패키지 관리자가 있으면 됐지 왜 pnpm이란 것이 생겼을까요?
pnpm은 performant npm의 약자입니다. 효율적인(performant) 노드 패키지 관리자라고 말할 수 있겠습니다.
기존의 npm의 가장 큰 단점은 dependency들의 중복 저장입니다. 프로젝트별로 node_modules 폴더에 매번 패키지를 별도로 설치했던 것과는 달리 pnpm은 전역(global) 저장소에 패키지를 물리적으로 한번만 저장하여 디스크 공간을 많이 절약할 수 있습니다.
참고자료
[1] https://yceffort.kr/2022/05/npm-vs-yarn-vs-pnpm
[2] https://github.com/npm/cli#is-npm-an-acronym-for-node-package-manager
[3] https://velog.io/@songyouhyun/Package.json%EA%B3%BC-Package-lock.json%EC%9D%98-%EC%B0%A8%EC%9D%B4
[4] https://velog.io/@sebinn/%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-%EB%B9%84%EA%B5%90-npm-yarn-pnpm
'Dev > javascript' 카테고리의 다른 글
[javascript] swiper.js 롤링이 처음으로 돌아가는 방법 (0) | 2024.01.03 |
---|---|
[javascript] new 연산자란 (0) | 2023.12.16 |
[nextjs] tailwindcss 사용할 때 globals.css에 있어야 하는 코드 (0) | 2023.12.09 |
[javascript] 비교연산자 ==와 === 차이 비교 (0) | 2023.11.15 |
[nextjs] Vercel로 배포하는 방법 (0) | 2023.11.08 |
[Node.js] fetch로 파일 전송시 발생한 Missing boundary in multipart 에러 해결 방법 (0) | 2023.10.31 |
[javascript] ESLint가 뭐지? (0) | 2023.10.29 |
[plotly.js] 차트, 플롯의 배경색 설정하는 방법 (0) | 2023.05.23 |