Node Package Manager
패키지: npm에 업로드된 노드 모듈
설치한 패키지의 버전 관리하는 파일
npm init
package.json에 정의된 사용자 지정 스크립트를 실행하는 명령어
start, test는 예외적으로 run 없어도 동작함.

--save 옵션은 dependencies에 패키지 이름을 추가하는 옵션
npm@5부터 기본값이므로 안 써도 됨.
이와 대조적으로, 개발 과정에서만 필요하고 프로덕션 환경에서는 필요 없는 패키지들은 devDependencies에 추가됩니다. 이는 npm install <패키지명> --save-dev(또는 -D) 명령을 통해 수행할 수 있습니다. devDependencies에 등록된 패키지는 개발 중에는 필요하지만, 실제 운영 환경에서는 사용되지 않는 도구들(예: 테스트 프레임워크, 빌드 도구 등)을 위한 곳입니다.
package.json은 내가 설치한 패키지에 대한 정보.
즉, 이건 내가 직접 설치한 패키지를 기록하는 파일
직접 의존성만 관리
pacakge-lock.json은 그 설치한 패키지의 의존 관계에 대한 세부 정보
즉, 이건 내가 직접 설피한 패키지로부터 파생된 모든 설치된 패키지의 의존 관계를 명시한 파일
직접 의존성 및 간접 의존성까지 관리
npm에 등록되지 않아도
npm install [저장소 주소]로 설치 가능
SemVer Semantic Versioning(유의적 버전)
메이저버전.마이너버전.패치 형태
npm i express@^ 1.1.1 // 1.1.1 이상 2.0.0 미만npm i express@~1.1.1 // 1.1.1 이상 1.2.0 미만npm i express@latest
npm i express@x