npm 패키지 버전별 설치, 삭제 명령어 정리
2023년 09월 11일자바스크립트로 개발을 하면 npm을 패키지 매니저로 자주 사용하게 된다. npm에 대해 간단히 알아보자.
npm 이란?
npm(node package manager)는 패키지 매니저로 node.js 설치 시 같이 설치된다. 패키지 매니저란 프로젝트에 필요한 의존성 패키지를 관리하는 프로그램을 말한다. (yarn 같은 다른 패키지 매니저도 있다)
npm으로 패키지 관리 외에도 스크립트(명령어) 기능, 패키지 배포 등의 작업도 할 수 있다.
npm 사용법
npm init
: node.js 프로젝트를 시작할 때 입력한다. 명령어 입력 후 후속으로 npm 관련 설정, 설명 등을 입력한다.npm init -y
: 별다른 설정 없이 바로 프로젝트를 시작한다.
npm init
완료 시 package.json
파일이 생성된다.
npm install은 프로젝트에 필요한 패키지를 설치할 때 사용한다.
npm install
: 프로젝트에 필요한 패키지 전체를 설치한다. 설치 시package-lock.json
파일을 기준으로 여러 패키지를 동시에 설치한다.npm install 패키지명
: 특정한 패키지를 설치한다.
*npm i
npm add
별칭으로 npm install
과 동일하게 사용 가능
버전 지정 설치
패키지를 설치할 때 원하는 버전 혹은 버전 범위를 지정해서 설치할 수도 있다.
-
npm i axios@latest
최신 버전 설치 -
npm i axios@1.5.0
특정한 버전 설치 -
npm i axios@">=1.4 <= 1.5"
특정 범위 설치조건에 맞는 버전 중 최신 버전이 설치된다.
이렇게 npm install (패키지명)
으로 설치하고 나면, package-lock.json
파일이 생성된다. package.json이 이미 있는데 이 파일은 왜 필요할까? 이야기가 길어지니 다른 글로
→ 패키지 잠금이란? beatandbite.com/what-is-pacakge-lock
옵션
-
-P
/--save-prod
: 디폴트. 아무것도 입력하지 않으면 이 옵션대로 실행된다.package.json
의 dependencies에 패키지 추가 -
-D
/--save-dev
:package.json
의 devDependencies에 패키지 추가. 개 발환경에서만 사용하는 패키지 설치할 때 사용한다.npm i jest --D
이런식으로 사용할 수 있다. -
-g
/--global
: 프로젝트가 아닌 node 설치되어 있는 디렉토리에 설치
업데이트
npm update 패키지명
: 패키지를 업데이트 하는데 사용한다
*npm up
npm upgrade
: upgrade
와 동일
패키지 업데이트 시 패키지를 전부 다 최신버전으로 업데이트 하지는 않는다. 그럴 경우 기존에 패키지에서 사용하던 코드가 작동하지 않을 수도 있다. 그래서 처음에 패키지를 설치할 때 버전 앞에 ^
문자가 앞에 붙어서 기록된다.
npm i axios
를 한다면 package.json
에 이렇게 작성된다.
"dependencies": {
"axios": "^1.5.0"
}
^
은 캐럿이라고 불리며, ^
이 적혀 있으면 메이저 버전 업데이트 외에 모든 업데이트를 진행한다. 소수점 자리 버전까지는 모두 최신버전으로 업데이트한다고 생각하면 된다.
^1.5.0
: 업데이트 시 1.5.0보다 크고 2.0.0보다 작은 버전 중 최신버전으로 업데이트 한다.^1.1
: 1.1보타 크고 2.0보다 작은 버전 중 최신버전으로 업데이트 한다.
~
은 틸트라고 불리며, 표시한 소수점자리 까지 업데이트를 진행한다.
~1.2.1
: 1.2.1보다 크고 1.3.0보다 작은 값 사이 업데이트~1.2
: 1.2보다 크고 2.0보다 작은 값 사이 업데이트
삭제
npm uninstall
: 패키지를 삭제한다. package.json에서 의존성 정보가 삭제된다. package-lock.json도 수정된다.
단순한 패키지 설치, 업데이트, 삭제에 대해 알아봤다. npm 사용법 외에도 npm이 패키지를 어떻게 관리하는지, 패키지 잠금은 무엇인지 알아둬야한다. 이런 npm의 특성을 알아야 환경별로 다르게 발생할 수 있는 에러 문제에 대응할 수 있고, 프로젝트의 패키지를 더 효과적으로 다룰 수 있다
관련 글
- 패키지 잠금 → beatandbite.com/post/what-is-package-lock
- npm의 어떻게 패키지를 관리할까? (예정)
참고
TAGS
NPM
NODE.JS