
npm이란
✅ Node Package Manager
- 이미 있는 기능을 다시 구현할 필요가 없어 효율적(대부분 오픈 소스)
✅ 패키지
- npm에 업로드된 노드 모듈
- 패키지들 간에도 의존 관계가 있음
npm 스크립트
✅ npm run [스크립트명]
- 스크립트로 지정한 명령 실행. run 꼭 붙이기.
✅ npm [npm명령어]
- npm 명령어들은 run 없이 실행 가능
e.g. npm start
package.json
✅ 현재 프로젝트에 대한 정보와 사용 중인 패키지 이름 및 버전 정보를 담은 파일
- 동일 버전을 설치하지 않으면 문제 생김
- 노드 프로젝트 시작 시에 가장 먼저 package.json부터 만들고 시작해야 함
✅ npm inint --yes
- 기본 값으로 입력된 package.json을 생성하는 명령어. 프로젝트 시작 시 사용
✅ npm init
- 문답식으로 package.json 생성. 동일하게 프로젝트 시작 시 사용
✅ npm install 패키지이름(= npm i 패키지이름)
- 프로젝트에서 사용할 패키지 설치
- 설치한 패키지의 이름과 버전 정보가 package.json에 기록된다.
node_modules
✅ npm install 시 node_modules 폴더 생성
- 내부에 설치한 패키지들이 들어 있음
- express 외에도 express와 의존 관계가 있는 패키지들이 모두 설치됨
✅ package-lock.json도 생성되어 패키지 간 의존 관계를 명확하게 표시함

개발용 패키지 설치
✅ npm install --save-dev 패키지명(= npm i -D 패키지명)
- package.json 안에 devDependencies에 추가됨
- 아래는 npm i -D nodemon을 했을 경우 package.json 내용 일부. 맨 아래에 devDependencies가 추가된 것을 볼 수 있다.

글로벌(전역) 패키지 설치
✅ npm install --global 패키지명(= npm i -g 패키지명)
- 모든 프로젝트와 콘솔에서 패키지를 사용 가능
- package.json에 기록되지 않음. 기록이 되는 게 중요하게 때문에 글로벌로 하는 건 지양하자
SemVer(Semantic Versioning) - 패키지 버전 이해하기
✅ 노드 패키지의 버전은 SemVer 방식을 따름
- 노드에서 배포를 할 때 항상 버전을 올려야 함
- Major(주 버전): 하위 버전과 호환되지 않는 수정 사항이 생겼을 때 올림
- Minor(부 버전): 하위 버전과 호환되는 수정 사항이 생겼을 때 올림
- Patch(수 버전): 기능에 사소한 버그를 해결했을 때 올림

✅ 버전 기호
- ^1.1.1: 패키지 업데이트 시 minor 버전까지만 업데이트됨.(ver 2.0.0은 안 됨)
- ~1.1.1: 패키지 업데이트 시 patch 버전까지만 업데이트 됨.(ver 1.2.0은 안 됨)
- @latest: 최신을 의미
- @next: 가장 최신 배포판 사용 가능(불안정함)
- 알파/베타/RC 버전이 존재할 수도 있다.
ps. npm install 시 permission denied 에러가 난다면 맨 앞에 sudo를 붙이자! 이유를 각자 알아서@#!@#@!#
'Dev > Node.js' 카테고리의 다른 글
| [Node.js] 10 - 노드 내장 객체 - console, process.env, nextTick (3) | 2024.04.27 |
|---|---|
| [Node.js] 09 - CommonJS & ECMAScripts Module (1) | 2024.04.22 |
| [Node.js] 07 - https와 http2 (0) | 2024.04.22 |
| [Node.js] 06 - REPL/JS 파일 사용법 (0) | 2024.04.22 |
| [Node.js] 05 - AJAX / JSON (1) | 2024.04.22 |