패키지 매니저는 패키지를 손쉽게 다루는 작업을 안전하고 편리하게 사용하기 위한 툴
다른 사람들이 만들어준 코드를 다운로드 받거나, 자신의 코드를 배포
Node.js에서 대표적으로 사용하는 패키지 매니저는 npm과 yarn
- 패키지란?
npm이나 yarn에 업로드된 Node.js 모듈을 패키지라고 부름
모듈이 모듈을 참조하여 사용하는거랑 같이 패키지도 다른 패키지를 사용가능한데 이런관계를 의존관계라고 함
npm은 자바스크립트에서 사용할 수 있는 패키지(모듈) 관리자
Node Package Manager의 약자로 npm이라는 이름을 가졌지만, 지금은 Node.js와 관계없이 프론트엔드에서만 사용 가능한 자바스크립트 패키지들도 모두 등록되어 있다.
npmjs.com 에서 검색하며 확인할 수 있는 패키지만 설치 가능
npm의 대체제로 FaceBook이 출시한 패키지 매니저
npm에서 부족한 부분을 보완하여 편리한 기능이 추가되었고, 더욱 빠른 속도로 패키지를 관리할 수 있는 패키지 매니저
npm & yarn 2가지를 같이사용하면 오류가 발생할 가능성이 있으니 같이 사용하지 않도록 해보자
설치한 패키지들의 버전을 관리할 때 사용하는 파일.
동일한 패키지를 사용하더라도 버전별로 기능을 다르게 사용할 수 있으므로 특정한 버전을 설치할 때 필요.
패키지 관리 외에도 프로젝트명, 작성자, 라이센스 정보등 다양한 메타 데이터들을 기록할 수 있다.
npm과 yarn 모두 동일한 package.json 파일을 참조한다.
package.json파일에서 정의한 패키지 외에도 node_modules에 들어있는 패키지들의 버전과 의존 관계가 상세하게 기록되어 있다.
npm으로 패키지를 설치, 수정, 삭제할 때마다 패키지들의 의존 관계를 package-lock.json파일에 저장.
저장된 패키지들은 정확히 일치하는 버전만 기록되므로, 프로젝트에서 의존하는 패키지 버전을 정확하게 관리할 때 사용할 수 있다.

명령어를 통해 package.json 파일을 만들 때 사용. package.json 은 npm 으로 설치된 모듈에 대한 정보가 들어있다.
새로운 프로젝트나 패키지를 만들 때 사용
npm install express

npm 으로 모듈을 설치할 때 쓰는 명령어다.
install 대신 i 라는 별명을 대신 사용할 수 있다.
install 뒤에 따라오는 express 는 설치하고자 하는 모듈의 이름을 명시.
npm install express 로 express 한개의 모듈을 설치할 수 있는데 띄어쓰기로 구분을 하여 여러개의 모듈을 설치하는것도 가능하다.
ex) npm install express mongoose jest

package.json 파일 내용 기반으로 npm install 명령어를 통해 설치된 모듈 파일들이 모여있는 곳.package.json에 설정된 모듈과 해당 모듈들이 참고하고 있는 또 다른 모듈도 함께 설치된다.
명령어가 입력되면 package.json 파일을 기반으로 node_modules에 명시된 모듈을 설치해주는 명령어.
내 프로젝트를 다른 사람에게 공유하거나 다른 사람의 프로젝트를 사용할 때 모듈을 설치하기 위해 실행하는 명령어.

개발 단계에서만 필요한 모듈들을 설치할 경우 이곳에 포함됩니다.
npm install -D (모듈이름) 으로 추가가능.