Server/Node.js (Express)

[Node.js] npm이란?

ooeunz 2019. 10. 11. 11:07
반응형

Node Pacackage Manager. 이하 npm은 이름 그대로 노드 패키지 매니저이다. 세상에는 많은 자바스크립트 프로그래머들이 있고, 그들이 유용한 자바스크립트 패키지들을 이미 만들어 두었고, 그런 코드들이 공개되어 있는 것이 바로 npm이다. npm은 세계 최대 규모의 패키지들을 보유하고 있다. 이러한 패키지들은 노드의 생태계를 더욱 견고하게 만들었다.

 

npm에 업로드된 노드 모듈을 패키지라고 부른다. 모듈이 다른 모듈을 사용할 수 있는 것처럼, 패키지도 다른 패키지를 사용할 수 있다. 이러한 관계를 의존 관계라고 한다.

 

https://www.npmjs.com/

 

npm | build amazing things

Bring the best of open source to your company npm is the tool used by over 11,000,000 JavaScript developers around the world. Your developers already use it. Your company depends on it. Create an Org and get more out of the tools your team already knows an

www.npmjs.com

 

이와 별개로 yarn이라는 패키지 매니저가 있다. yarn은 facebook진영에서 만든 것으로 React나 React Native와 같은 facebook 진영의 framework를 사용할 때 종종 볼 수 있다. yarn은 npm서버에 비해 속도가 빠르고 사용법이 npm과 크게 다르지 않아 npm을 사용할 줄 안다면 yarn 또한 쉽게 사용할 수 있다. npm과 yarn 중 어떤 것을 사용할지는 여러분의 선택에 달렸지만, 양쪽 모두 장단점을 가지고 있다.

 

package.json

프로젝트를 진행하다보면 무수히 많은 패키지들을 추가하게 된다. 이러한 패키지들은 저마다 고유한 버전이 있으므로 이것들을 기록해둘 필요가 있다. 이때 설치한 패키지들을 관리하는 파일이 바로 package.json이다. 우리가 node로 프로젝트를 시작한다면 가장 먼저 만들어야 할 파일이 package.json이다. npm은 package.json을 만드는 명령어를 제공한다.

 

콘솔에서 프로젝트를 시작할 폴더로 이동한 후, 다음 명령어를 입력하자.

npm init

 

  • package name : 패키지의 이름이다.
  • version : 패키지의 버전이다.
  • entry porint : 자바스크립트 실행 파일 진입점이다. 보통 마지막으로 module.exports를 하는 파일을 지정한다.
  • test command : 코드를 테스트할 때 입력할 명령어를 의미한다.
  • git repository : 코드를 저장해둔 git 저장소 주소를 의미한다.
  • keywords : 키워드는 npm 공식 홈페이지에서 패키지를 쉽게 찾을 수 있게 해 준다.
  • license : 해당 패키지의 라이선스를 넣어주면 된다.

※ open source라고 모든 패키지를 제약 없이 사용할 수 있는 것은 아니다. license별로 별도의 제약 사항이 있으므로 설치 전에 확인을 해야 한다. ISC, MIT, BSD 라이선스를 가진 패키지는 사용한 패키지의 라이선스만 밝혀준다면 자유롭게 사용할 수 있다.

 

다음으로는 npm패키지를 설치해보도록 하겠다. 프로젝트 폴더에서 다음과 같이 입력하자. 필자의 예시에서는 express패키지를 설치해보도록 하겠다.

 

npm install 패키지명 을 입력하면 쉽게 패키지를 설치할 수 있다. 종종 --save라는 옵션을 붙이는 블로그나 책을 볼 수 있는데 npm@5 버전부터는 기본값으로 설정돼서 따로 붙이지 않아도 된다.

 

package version 이해하기

package의 버전과 node의 버전은 항상 세 자리로 이루어져 있다. 이는 SemVer 방식의 버전 넘버링을 따르기 때문이다.

Senver는 Semantic Versioning(유의적 버전)의 약어로 버전을 구성하는 세 자리 모두 의미를 가지고 있다는 뜻이다.

 

 

위의 이미지를 예시로 보도록 하겠다.

 

첫 번째 자리의 4는 Major버전을 의미한다. 버전이 0이면 초기 개발 중이라는 뜻이다. 1부터는 정식 버전이라는 뜻으로 Major의 버전이 변경된다는 것은 하위 호환이 안될 정도로 패키지의 내용이 수정되었을 때 올린다. 즉 1.5.0 버전을 패키지를 사용하던 사람들이 2.0.0으로 업데이트를 했을 경우 에러가 발생할 확률이 높다는 뜻이다.

 

두 번째 자리 7은 minor버전이다. minor버전은 하위 호환이 가능한 기능 업데이트 시 올린다.

 

세 번째 자리는 patch 버전이다. 기존 기능에 문제가 있어 수정한 것을 내놓았을 때 patch버전을 올린다.

반응형