본문 바로가기
Node.js

[Backend] 패키지 매니저

by Hangii 2023. 1. 30.

npm이란

Node Package Manager

  • 노드의 패키지 매니저
  • 다른 사람들이 만든 소스 코드들을 모아둔 저장소이다. 100만 개 정도 존재한다.
  • 남이 미리 작성해둔 코드를 사용하여 프로그래밍이 가능하다.
  • 이미 존재하는 기능을 다시 구현할 필요가 없어 효율적이다.
  • 오픈 소스 생태계를 구성중이다.

패키지

  • 패키지: npm에 업로드된 노드 모듈
  • 모듈이 다른 모듈을 사용할 수 있듯, 패키지도 다른 패키지를 사용할 수 있다.
  • 의존 관계라고 부름

package.json

서버를 작성할 때, 보통은 서버, 세션, 쿠키 http, 요청, 헤더 관리 등 거의 대부분을 다운 받아 이들을 연결하는 작업 정도만 직접 한다. 이렇게 다운 받은 파일들의 기록이 담긴 파일을 package.json이라고 부른다.

  • 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해둬야 함
  • 동일한 버전을 설치하지 않으면 문제가 생길 수 있음
  • 노드 프로젝트 시작 전 package.json부터 만들고 시작한다.(npm init)

 

node_modules와 npx, SemVer

package-lock.json이 필요한 이유

node와 npm이 버전 문제가 많이 생긴다. package-lock.json에서는 버전을 고정해 버전 문제를 방지한다.

package-lock.json의 내용을 확인해보면 버전이 다 세 자리로 이루어진 것을 확인할 수 있다.

이런 식으로 버전을 기록하는 방식을 SemVer라고 한다.

 

SemVer(유의적 버저닝) 방식

  • Major(주 버전), Minor(부 버전), Patch(수 버전) 으로 구성됨.
  • 노드에서는 배포를 할 때 항상 버전을 올려야 함
  • Major는 하위 버전과 호환되지 않은 수정 사항이 생겼을 때 올림. 대대적인 수정이 있어서 기존 코드가 돌아가지 않음을 알림
  • Minor는 하위 버전과 호환되는 수정 사항이 생겼을 때 올림. 수정 사항이 있지만 기존 코드를 가진 사람들이 안심하고 사용해도 됨.
  • Patch는 기능에 버그를 해결했을 때 올림. 사소한 버그 수정

 

버전 기호 사용하기

버전 앞에 기호를 붙여 의미를 더한다.

  • ^1.1.1: 패키지 업데이트 시 minor 버전까지만 업데이트 됨(2.0.0 버전은 안됨)
  • -1.1.1: 패키지 업데이트 시 patch 버전까지만 업데이트 됨(1.2.0 버전은 안됨)
  • >=, <=, >, <는 이상, 이하, 초과, 미만
  • @latest는 최신을 의미
  • @next로 가장 최신 배포판 사용 가능(그치만 불안정함)
  • 알파/베타/RC 버전이 존재할 수도 있음

 

npm 명령어들 알아보기

npm outdated 패키지명: 패키지 삭제(npm rm 패키지명으로도 가능)

npm update: package.json에 따라 업데이트

npm uninstall 패키지명: npm 패키지를 검색할 수 있음(npmjs.com에서도 가능)

npm info 패키지명: 패키지의 세부 정보 파악 가능

npm adduser: npm에 로그인을 하기 위한 명령어(npmjs.com에서 회원가입)

npm whoami: 현재 사용자가 누구인지 알려줌

npm logout: 로그인한 계정을 로그아웃

npm version 버전:package.json의 버전을 올림

npm ls: 내 프로젝트가 어떤 패키지를 사용하고 있는지 알려줌

npm deprecate [패키지명][버전] [메시지]: 패키지를 설치할 때 경고 메시지를 띄우게 함(오류가 있는 패키지 적용)

 

npm 배포하기

npm publish: 자신이 만든 패키지를 배포

npm unpublish: 자신이 만든 패키지를 배포 중단(배포 후 24시간 내에만 가능 - 다른 사람이 내 패키지를 사용하고 있는데 배포가 중단되면 문제가 생기기 때문)

npm unpublish [패키지명] --force: 72시간 내에 사용하면 배포 취소

 

기타 명령어는 https://docs.npmjs.com 의 CLI Commands에서 확인

 

 

 

'Node.js' 카테고리의 다른 글

[Backend] http 모듈로 서버 만들기  (0) 2023.01.30
[Backend] 노드 기능  (0) 2023.01.26
[Backend] 프로미스  (1) 2023.01.26
비구조화 할당  (0) 2023.01.26
화살표 함수  (0) 2023.01.25

댓글