NPM (Node Package Manager)?
npm (노드 패키지 매니저/Node Package Manager)은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다. 자바스크립트 런타임 환경 Node.js의 기본 패키지 관리자이다. 명령 줄 클라이언트(npm), 그리고 공개 패키지와 지불 방식의 개인 패키지의 온라인 데이터베이스(npm 레지스트리)로 이루어져 있다. 이 레지스트리는 클라이언트를 통해 접근되며 사용 가능한 패키지들은 npm 웹사이트를 통해 찾아보고 검색할 수 있다. 패키지 관리자와 레지스트리는 npm사에 의해 관리된다.
npm을 이용한 패키지 설치
$ npm install <package>
- install 대신 i를 약어로 사용이 가능
→ $ npm i <package> - <package> 에는 설치할 패키지 명을 적는다. 만약 특정한 버전을 설치하고 싶다면 패키지 이름 뒤에 골뱅이(@)를 넣고 이어서 버전 명을 적으면 된다.
→ $ npm install joi@16.1.8 - 이미 package.json이 포함되어 있는 프로젝트에서 기존 의존성 패키지들을 일괄적으로 설치하고 싶다면 npm install만 입력하여 모든 의존성 패키지를 일괄 설치할 수 있다.
→ $ npm install
Semantic Versioning (유의적 버전)
버전 정보의 구성
<pachage>@1(major version).0(minor version). 0(patch version)
- Major version Number 하위 호환이 되지 않는 변경 사항
- Minor Version Number 하위 호환이 되는 변경 사항
- Patch Version Number 간단한 버그 수정
local 설치와 global 설치
- local 설치는 지역 설치라고도 하며 패키지는 프로젝트 루트 디렉터리 내의 node_modules 디렉터리에 설치되며 해당 프로젝트 내에서만 사용이 가능하다.
- global 설치는 전역 설치라고도 하며 -g(--global) 옵션을 이용해 설치한다. 패키지 설치 위치는 아래 경로와 같다.
- macOS /usr/local/lib/node_modules
- window c:\Users\{UserName}\AppData\Roaming\npm\node_modules
$ npm install -g <pachage>
npm install 옵션
- --save npm v5.X.X 부터는 기본 값 옵션으로 포함되며 package.json의 dependency 항목에 모듈을 추가한다.
- -P (--save-prod) install을 할 때 이미 -P 옵션이 기본적으로 부과된 상태이며, dependency에 패키지를 등록하고 프로젝트가 배포 시 사용될 의존성 모듈을 정의하고 설치한다.
- -D (--save-dev) devDependencies에 패키지를 등록하며, 개발 단계에서만 사용하는 의존성 모듈이라는 것을 명시한다.
- -O (--save-optional) dependencies에 패키지를 등록하며 선택적 의존성 모듈임을 명시하고 설치한다.
- -E (--save-exact) dependencies에 패키지를 등록하며 npm의 기본 SemVer 연산자(^, ~ 같은)를 사용하는 대신 정확한 버전으로 설치한다.
- -B (--save-bundle) bundleDependencies에 패키지를 등록하며, 번들로 묶을 패키지 의존성 모듈을 명시하고 설치한다.
- --no-save dependencies에 패키지를 등록하지 않는다.
- --dry-run 아무것도 설치를 진행하지 않지만 설치하는 것과 같이 log를 보여준다.
- --force 이미 디스크에 복사본이 있어도 무조건 다시 패키지를 다운로드하게 강제한다.
'Backend > Node.js' 카테고리의 다른 글
[Javascript] 2차원 배열을 1차원 배열로 만들 (0) | 2023.02.08 |
---|---|
[FP] fp-ts 란 (0) | 2023.02.07 |
[TypeORM] Active Record Pattern과 Data Mapper Pattern (0) | 2022.09.15 |
[WEB] Polling과 WebSocket (... socket.io) (0) | 2022.08.20 |
[Express] Joi를 이용해 Validation 검증 (0) | 2022.07.25 |