개인적으로 공부하면서 기록하는 공간으로
잘못된 정보는 댓글을 통해 알려주시면 감사하겠습니다 :-)
▪ ▪ ▪ ▪ ▪
NPM(Node Package Manager)
자바스크립트 패키지 매니저이다. node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할과 패키지 설치 및 관리를 위한 CLI 제공하며, 자신이 작성한 패키지를 공개할 수도 있고 필요한 패키지를 검색하여 재사용할 수도 있다.
패키지 설치
$ npm install <package>
1) 패키지명을 명시해 특정 패키지를 설치하는 동작
→ $ npm install express : express 모듈 설치 된다.
2) 패키지명을 명시하지 않고 package.json 파일의 의존성을 설치하는 동작
→ $ npm install : package.json에 포함된 의존성 패키지들이 일괄적으로 설치 된다.
지역 설치와 전역 설치
1) 지역 (local) 설치 (default)
· 프로젝트 루트 디렉터리에 node_modules 디렉터리가 자동 생성되고 그 안에 패키지가 설치된다.
· 지역으로 설치된 패키지는 해당 프로젝트 내에서만 사용할 수 있다.
$ npm install <package>
2) 전역 (global) 설치
· 전역으로 설치된 패키지는 전역에서 참조할 수 있다.
· 모든 프로젝트가 공통으로 사용하는 패키지는 전역에 설치한다.
· 전역에 설치된 패키지는 OS에 따라 설치 장소가 다르다.
- macOS /usr/local/lib/node_modules
- window c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules
$ npm install -g <package>
npm install 명령어 옵션
--save 옵션은 package.json의 dependency 항목에 모듈을 추가한다는 의미로, npm@5 부터 --save 옵션을 기본 옵션으로 저장한다.
1) -P (--save-prod) : dependencies에 패키지를 등록. 프로젝트가 배포 시 사용될 의존성 모듈을 정의하고 설치한다. (defalut)
2) -D (--save-dev) : devDependencies에 패키지를 등록. 개발 단계에서만 사용하는 의존성 모듈을 정의하고 설치한다.
3) -O (--save-optional) : optionalDependencies에 패키지를 등록. 선택적 의존성 모듈읠 정의하고 설치한다.
4) --no-save : dependencies에 패키지를 등록하지 않는다.
5) -E (--save-exact) : dependencies에 패키지를 등록.npm의 기본 SemVer 연산자를 사용하는 대신 정확한 버전으로 설치한다.
6) -B (--save-bundle) : bundleDependencies에 패키지를 등록. 번들로 묶을 패키지 의존성 모듈을 정의하고 설치한다.
유의적 버전 (Semantic versioning)
npm install 명령어의 패키지명 뒤에 @버전을 추가하면 패키지 버전을 지정하여 설치할 수 있다.
버전 정보의 구성
1) 메이저 버전 번호 : 하위 호환이 되지 않는 변경 사항
2) 마이너 버전 번호 : 하위 호환이 되는 변경 사항
3) 패치 버전 번호 : 간단한 버그 수정
버전 정보 표기 방법
표기법 | 설명 |
version | 명시된 version과 일치 |
>version | 명시된 version보다 높은 버전 |
>=version | 명시된 version과 같거나 높은 버전 |
<version | 명시된 version보다 낮은 버전 |
<=version | 명시된 version과 같거나 낮은 버전 |
~version | 명시된 version과 근사한 버전 |
^version | 명시된 version과 호횐되는 버전 |
~(틸트)와 ^(캐럿)의 차이
1) ~(틸트)
• 틸트는 패치 버전 범위 내에서 업데이트 한다.
ex)
- ~0.0.1 : 0.0.1 <= version < 0.1.0
- ~0.1.1 : 0.1.1 <= version < 0.2.0
2) ^(캐럿)
• 캐럿은 마이너 버전 범위 내에서 업데이트 한다.
ex)
- ^1.0.2 : 1.0.2 <= version < 2.0
Reference
✔ https://docs.npmjs.com/cli/v8/commands/npm-install
✔ https://poiemaweb.com/nodejs-npm