Chapter5 npm

1 분 소요

npm (Node Package Manager)

npm 이란.


npm 이란 이름 그대로 노드 패키지 매니저이다. 대부분의 패키지가 npm에 등록되어 있으므로 특정 기능의 패키지가 필요하다면 npm에서 찾아 설치하면 된다. npm에 업로드된 모듈을 패키지라 부른다. 모듈이 다른 모듈을 사용할 수 있는 것처럼, 패키지가 다른 패키지를 사용할 수 있다. 이런 관계를 의존 관계라 하며 의존 관계는 조금 있다가 알아보자. w21q`

package.json


서비스에 필요한 패키지 수가 매우 많기 때문에 저마다의 고유 버전을 기록해두어야 한다.

같은 패키지라도 버전별로 기능이 다를 수 있으므로 동일한 버전을 설치해야 하는 것이다. 그것을 관리하는 파일이 바로 package.json이다.
콘솔로 프로젝트 시작 폴더로 이동 후 다음 명령어를 입력하자
npm init

  • package name: 패키지의 이름이다. package.jsonname 속성의 저장된다.
  • version: 패키지의 버전이다. npm에서는 다소 엄격하게 다룬다.
  • entry point: 자바스크립트 실행 파일의 진입점이다. 보통 마지막으로 module.exports를 하는 파일이 저장된다. package.jsonmain 속성에 저장된다.
  • test command: 코드를 테스트할 때 입력할 명령어를 의미한다. package.json scripts 속성안의 test의 저장된다.
  • git repository: 코드를 저장해둔 Git 저장소 주소를 의미한다. 나중에 소스에 문제가 생겼을 때 사용자들이 이 저장소의 방문해 문제를 제기할 수도 있고 코드 수정본을 올릴 수도 있다. package.jsonrepository 속성에 저장된다.
  • keywords: 키워드는 npm 공식 홈페이지에서 패키지를 쉽게 찾을 수 있게 해준다. package.jsonrepository 속성에 저장된다.
  • license: 해당 패키지 라이선스를 넣어주면 된다.

npm install


  • npm install morgan cookie-parser expresds-session: 동시에 여러 패키지를 설치할 수 있다.
  • npm insatll --save-dev []: 배포 시에 사용되지 않고 개발 중에만 사용되는 패키지들이다.
  • npm insatll --global []: 현재 패키지 폴더에 설치하는 것이 아니라 npm이 설치되어 있는 폴더에 설치한다.

npm inpm -D, npm -g로 줄여서 쓸 수 있다.\

package version


노드 패키지들의 버전은 항상 세 자리로 이루어져 있다. 이는 SemVer 방식의 버전 넘버링을 따르기 때문이다.

  1. 기존 버전과 호환되지 않게 API가 바뀌면 “주(主) 버전”을 올리고,
  2. 기존 버전과 호환되면서 새로운 기능을 추가할 때는 “부(部) 버전”을 올리고,
  3. 기존 버전과 호환되면서 버그를 수정한 것이라면 “수(修) 버전”을 올린다.
  4. 주.부.수 형식에 정식배포 전 버전이나 빌드 메타데이터를 위한 라벨을 덧붙이는 방법도 있다.

    출처 : https://semver.org/lang/ko/

SemVer는 Semantic Versioning의 약어이다. 세 자리 모두 의미를 가지고 있다는 뜻이다.

package.json에는 SemVer식 세 자리 버전 외에도 ^나 ~또는 >, <같은 문자가 붙어있다. 이 문자는 버전에는 포함되지 않지만 설치 또는 업데이트 시 어떤 버전을 설치해야 하는지 알려준다.

  • ^ 는 부(部) 버전까지만 설치 또는 업데이트 한다.
  • ~ 는 수(修) 버전까지만 설치 또는 업데이트 한다.
  • <, >, >=, <=, = 는 알기 쉽게 초과, 미만, 이상, 이하, 동일을 뜻하며 npm i express@>1.1.1처럼 반드시 1.1.1 버전보다 높은 버전이 설치된다.
  • @latest 도 사용하는데, 항상 최신 버전의 패키지를 설치한다 @x로도 표현할 수 있다.
Refernce
  • 조헌영, Node.js 교과서, 길벗, 5장 npm