Node Package Manager
NPM(Node Package Manager)은 Node.js를 위한 패키지 관리자.
NPM은 자바스크립트 패키지(모듈)의 설치, 버전 관리, 의존성 해결 등을 돕는 도구
1. NPM의 주요 기능
- 패키지 설치 : NPM은 로컬 프로젝트 또는 전역으로 자바스크립트 패키지를 설치.
- 의존성 관리 : 프로젝트에서 필요한 라이브러리의 의존성을 자동으로 설치하고 관리.
- 스크립트 실행 : package.json 파일에 정의된 스크립트를 실행.
- 패키지 게시 : 개발자가 만든 패키지를 NPM 레지스트리에 게시하여 사용할 수 있게 함.
2. NPM의 기본 구성 요소
패키지
- 패키지는 특정 기능을 수행하는 자바스크립트 코드 모음.
예를 들어, Express는 Node.js 서버 개발을 위한 패키지.
NPM 레지스트리
- NPM 레지스트리는 전 세계 개발자들이 공유하는 중앙 저장소.
- 수십만 개의 패키지가 등록되어 있어 누구나 설치해서 사용.
package.json 파일
- 프로젝트의 메타데이터를 담고 있는 JSON 파일.
- 이 파일에는 프로젝트 이름, 버전, 의존성, 스크립트 등이 정의.
{
"name": "my-project",
"version": "1.0.0",
"description": "A simple Node.js project",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"express": "^4.17.1"
}
}
3. NPM 명령어
패키지 초기화
npm init
- 새로운 Node.js 프로젝트를 시작할 때 package.json 파일을 생성.
npm init -y
- 기본 설정으로 package.json 파일을 빠르게 생성.
패키지 설치
npm install <패키지명>
- 특정 패키지를 설치하고, package.json 파일의 dependencies 섹션에 추가.
npm install
- package.json 파일에 정의된 모든 의존성을 설치.
npm install -g <패키지명>
- 패키지를 전역으로 설치하여 CLI(명령줄)에서 사용 가능하게 함.
패키지 제거
npm uninstall <패키지명>
패키지 업데이트
npm update <패키지명>
npm outdated
- 프로젝트에서 사용 중인 패키지 중 업데이트 가능한 패키지를 확인.
스크립트 실행
npm run <스크립트명>
- package.json 파일에 정의된 스크립트를 실행.
- 예: npm run start는 package.json의 scripts 섹션에 정의된 start 스크립트를 실행.
캐시 관리
npm cache clean --force
NPM의 캐시를 정리.
4. NPM의 동작 원리
- NPM은 패키지를 설치할 때 node_modules라는 디렉터리에 패키지를 저장.
이 디렉토리는 프로젝트 루트에 위치하고, NPM은 여기에서 패키지를 찾아 사용.
의존성 트리
- NPM은 프로젝트에서 사용하는 모든 패키지와 그 패키지가 의존하는 다른 패키지들을 트리 구조로 관리.
버전 관리
- NPM은 패키지 버전 관리를 통해 서로 다른 프로젝트에서 동일한 패키지의 다양한 버전을 사용할 수 있게 함.
5. NPM의 장점
풍부한 생태계
수많은 오픈 소스 자바스크립트 패키지를 사용할 수 있어, 개발 속도를 크게 높일 수 있음.
자동 의존성 관리
필요한 패키지를 쉽게 설치하고, 의존성을 자동으로 관리.
버전 관리
다양한 프로젝트에서 패키지 버전을 일관되게 관리.
6. NPM의 한계
패키지 충돌
다양한 패키지가 서로 의존할 경우, 버전 충돌이 발생할 수 있음.
보안 문제
수많은 패키지가 오픈 소스로 공개되어 있어, 악의적인 코드가 포함될 위험.
7. NPM 사용 시 유용한 팁
package-lock.json 파일
- 이 파일은 npm install을 실행할 때 생성
- 설치된 패키지들의 정확한 버전을 기록.
- 이 파일을 통해 개발 환경 간의 일관성을 유지.
버전 범위 관리
- ^, ~ 기호를 사용하여 패키지 버전의 범위를 지정.
- ^는 주 버전(major)이 고정되고, ~는 부 버전(minor)이 고정.
전역 설치 패키지 관리
- CLI 도구나 전역적으로 사용되는 패키지는 npm install -g로 설치하여 시스템 전체에서 접근.