npm (Node Package Manager)
- 노드 패키지 매니저
- 대부분의 자바스크립트 프로그램은 패키지라는 이름으로 npm에 등록되어 있음
- Node.js 패키지/모듈 저장소
- Node.js 패키지 설치 및 버전/호환성 관리를 할 수 있는 CLI 유틸리티
패키지
- npm에 업로드된 노드 모듈
- 의존관계
- 패키지가 다른 패키지를 사용할 수도 있음
yarn
- 페이스북이 내놓은 패키지 매니저
- React, React Native 등 페이스북 진영의 프레임워크 사용 시 종종 볼수 있음
간단한 사용법
버전 확인
$ npm --version
모듈 설치
$ npm install [패키지 이름]
$ npm i [패키지 이름]
$ npm install morgan cookie-parser express-session
$ sudo npm install [패키지 이름] -g
$ sudo npm i [패키지 이름] -g
$ npm link [패키지 이름]
$ npx [패키지 이름] node_modules
$ 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": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node [파일명]"
},
...
}
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
- 가장 최근 배포판
- 안정되지 않은 알파, 베타 버전 설치 가능