패키지를 손쉽게 다루는 작업을 안전하고 편리하게 사용하기 위한 툴.
다른 사람의 코드를 다운로드하거나 내 코드를 배포하는 것이 가능하다.
패키지 매니저에 업로드된 모듈을 패키지라고 부른다.
패키지는 다른 패키지를 사용할 수 있다. (의존 관계)
대표적으로 npm, yarn이 있다.
JavaScript에서 사용할 수 있는 패키지 관리자이다.
파이썬에서 flask, bs4 등의 모듈을 설치할 때 pip install로 설치했듯이 JavaScript에서는 필요한 모듈/라이브러리를 npm으로 설치할 수 있다.
(express 라이브러리)
npm의 약점을 보완하여 편리한 기능이 추가되었고 더 빠른 속도로 패키지를 관리할 수 있다.
한 프로젝트에서 npm과 yarn을 모두 사용 x
설치한 패키지들의 버전을 관리할 때 사용하는 파일.
Package.json에는 설치한 패키지, 버전을 비롯해 프로젝트명, 작성자, 라이센스 정보 등 다양한 메타 데이터를 기록할 수 있다.
npt과 yarn 모두 동일한 package.json 파일을 참조한다.
Package.json에 기록되어있는 패키지 외에도 node_modules에 들어있는 패키지에 대한 정보(버전과 의존 관계)가 상세하게 기록되어 있다.
npm으로 패키지를 설치/수정/삭제할 때마다 패키지들의 의존 관계가 package-lock.json 파일에 저장된다.
package.json 파일 생성 (npm으로 설치한 모듈 정보)
npm init 실행 예시)

입력한 정보대로 package.json 파일이 생성된다.

특정 패키지/모듈 설치
예) npm install express // express라는 패키지 설치
package.json에는 설치한 패키지들의 정보(dependencies)가 기록되고
package-lock.json에는 설치한 패키지들의 의존 관계가 자세하게 기록된다.
설치된 패키지들은 실제로는 node_modules 폴더에 할당된다 (node_modules는 배포 x)
devDependencies (개발 단계에서만 필요한 모듈 설치)
npm install -D module_name