[Node.js] 패키지 매니저

hahaha·2021년 10월 10일
0

Node.js

목록 보기
5/10

npm (Node Package Manager)

  • 노드 패키지 매니저
  • 대부분의 자바스크립트 프로그램은 패키지라는 이름으로 npm에 등록되어 있음
  • Node.js 패키지/모듈 저장소
  • Node.js 패키지 설치 및 버전/호환성 관리를 할 수 있는 CLI 유틸리티

패키지

  • npm에 업로드된 노드 모듈
  • 의존관계
    - 패키지가 다른 패키지를 사용할 수도 있음

yarn

  • 페이스북이 내놓은 패키지 매니저
  • React, React Native 등 페이스북 진영의 프레임워크 사용 시 종종 볼수 있음

간단한 사용법

버전 확인

$ npm --version

모듈 설치

# 기본적으로 로컬 모듈로 설치: 현재 디렉토리안에 있는 node_modules
$ npm install [패키지 이름]
$ npm i [패키지 이름]

# 한 번에 여러개의 모듈 설치 가능
$ npm install morgan cookie-parser express-session

# 글로벌(전역) 모듈 설치: user/lib/node_modules
$ sudo npm install [패키지 이름] -g
$ sudo npm i [패키지 이름] -g

# package.json에 기록되지 않음
# 글로벌 모듈은 불러온 뒤 사용가능
$ npm link [패키지 이름]

# package.json에 기록이 되면서 전역 설치 효과를 내는 방법
$ npx [패키지 이름] node_modules

# 개발용 모듈 설치: package.json의 devDependencies 속성에서 관리
$ npm install --save-dev [패키지 이름]
$ npm i -D [패키지 이름]

--save 옵션

dependencies 에 패키지 이름을 추가하는 옵션
npm@5 부터 기본값으로 설정되어있어 따로 붙이지 않아도 됨

모듈 제거

$ npm uninstall [패키지 이름]

모듈 업데이트

$ npm update [패키지 이름]

모듈 검색

$ npm search [패키지 이름]

package.json

  • 해당 프로젝트가 의존하는 모듈과 모듈 버전(속성)을 관리하는 파일
  • 노드 프로젝트를 하기 전 먼저 package.json 파일 만들고 시작
$ npm init

관련 정보

  • package name
  • version
  • description
  • entry point: JS 실행 파일 진입점
  • test commmand
  • git repository
  • keywords
  • author
  • license: ISC, MIT, BSD, APACH, GPL, ...
{
  "name": "npmtest",
  "version": "0.0.1", 
  ...
  "script": {	// npm 명령어를 저장
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node [파일명]"	// npm start로 바로 실행 가능
  },
  ...
}

node_modules

  • 직접 설치한 패키지(express)가 의존하는 패키지
  • 패키지 하나가 다른 여러 패키지에 의존하고, 그 패키지들은 또 다른 패키지들에 의존
  • 보관할 필요, 커밋할 필요 X
    - 언제든지 npm install로 설치 가능

package-lock.json

  • 패키지들 간의 내부 의존 관계 정보
  • 설치한 패키지 외에 node_modules에 들어있는 패키지들의 정확한 버전과 의존관계 담고 있음

패키지 버전

  • SemVer 방식의 버전 넘버링
    - Semantic Versioning 유의적 버전
    - 버전을 구성하는 세 자리가 모두 의미를 지님

1. major

  • 0: 초기 개발 중
  • 1: 정식 버전
  • 하위 호환이 안 될 정도로 패키지의 내용이 수정되었을 때 변경

2. minor

  • 하위 호환이 되는 기능을 업데이트 할 때 변경

3. patch

  • 새로운 기능 보단, 기존 기능의 문제를 수정했을 때 변경

- 버전 관련 기호

^

  • minor 버전까지만 설치 / 업데이트
  • ex. npm i express@^1.1.1
    -> 1.1.1 이상 ~ 2.0.0 미만 버전만 설치

~

  • patch 버전까지만 설치 / 업데이트
  • ex. npm i express@~1.1.1
    -> 1.1.1 이상 ~ 1.2.0 미만 버전만 설치

>, <, >=, <=, =

@latest (@x)

  • 안정된 최신 버전

@next

  • 가장 최근 배포판
  • 안정되지 않은 알파, 베타 버전 설치 가능
profile
junior backend-developer 👶💻

0개의 댓글