npm i (npm install)
npm install
은 프로젝트에 패키지를 설치하기 위해 사용하는 명령어입니다.
사용법
필요한 패키지를 설치할 경우 아래와 같은 형식으로 사용합니다.
npm install <설치할 패키지>
or
npm install <설치할 패키지>@latest (최신 버전으로 설치)
or
npm install <설치할 패키지>@버전명 (특정 버전으로 설치)
프로젝트가 의존하고 있는 모든 패키지 설치
npm install
위의 두 가지 방법 모두 package-lock.json
을 먼저 확인하고
존재한다면 lockfile
을 이용해서 의존하고 있는 패키지 정보를 확인하고node_moduels
에 설치합니다.
만약 node_modules
나 package.json
에 변화가 생기면package-lock.json
을 업데이트하여 의존 패키지 정보를 기록합니다.
npm ci (npm clean-install)
사용법
npm ci
npm ci
는 package-lock.json
에 명시되어있는 패키지 정보를 활용해서정확한
버전의 패키지들을 node_moduels
에 설치합니다.
따라서, 협업을 할 때, 팀원들이 동일한 버전의 패키지를 사용하는 것을 보장합니다.
npm i 와 npm ci의 차이점
package-lock.json
을 수정하지 않습니다.npm ci
는package-lock.json
또는npm-shrinkwrap.json
이 있어야 합니다.pacagke-lock.json의
의존성이package.json
의 의존성과 일치하지 않으면npm ci
는pacakge-lock.json
을 업데이트하지 않고 오류와 함께 종료됩니다.npm ci
는 한 번에 전체 프로젝트만 설치할 수 있습니다.node_moduels
가 이미 있는 경우npm ci
가 설치를 시작하기 전에 자동으로 제거됩니다.npm ci
는 쓰기 권한이 없기 때문에pacakge-lock.json
을 수정하지 않습니다.
오직package-lock.json
을 읽고 의존성 목록을 설치합니다.
package-lock.json
이번 글에서 자주 등장하는 package-lock.json
은 무엇일까요?
package-lock.json
은 npm
이 node_moduels
트리 또는pacakge.json
을 수정하는 모든 작업에 대해 자동 생성됩니다.
의존성 업데이트에 관계없이 후속 설치에서 동일한 트리를 생성할 수 있도록
생성한 정확한 트리를 설명하고
이 파일은 소스 리포지토리에 커밋하기 위한 것이며 다양한 용도로 사용됩니다.
협업 시 pacakge-lock.json 을 사용한다면 아래와 같은 과정을 거칠 수 있습니다.
node_modules
폴더를 제외하고package.json
과package-lock.json
파일을 커밋합니다.- 팀원은 소스코드를 받은 후
npm install
또는npm ci
를 실행합니다. - 의존성 트리가 처음 세팅한 환경과 동일하게 설치됩니다.
위의 과정을 거치면 팀원들이 동일한 버전의 패키지를 사용할 수 있게 됩니다.
pacakge.json과 package-lock.json의 차이점
pacakge.json
은 버전 정보를 저장할 때version range로
명시되어있습니다.- ex )
"react": "~17.0.1"
- ex )
package-lock.json
은 버전명이 정확히 명시되어 있습니다.
참고
npm ci : npm ci 공식문서
pacakge-lcok.json : package-lock.json 공식문서