본문 바로가기
나를 위한 개발기록

npm-ci 와 npm install의 차이

by 랩린안 2022. 10. 13.

참고자료:

https://docs.npmjs.com/cli/v7/commands/npm-ci

 

npm-ci | npm Docs

Install a project with a clean slate

docs.npmjs.com

https://betterprogramming.pub/npm-ci-vs-npm-install-which-should-you-use-in-your-node-js-projects-51e07cb71e26

 

npm ci vs. npm install — Which Should You Use in Your Node.js Projects?

And what exactly is the difference?

betterprogramming.pub

`


# npm

 

npm은 Node.js 프로젝트의 기본 패키지 관리자입니다.

npm을 사용하면 종속성을 설치하고 업데이트하는 것이 쉽습니다.

npm install이나 npm i는 익숙할텐데, npm v6- 에 새롭게 추가된 명령어가 있습니다.

 

npm ci 인데요. 

 

두 명령어의 차이에 대해서 알아보겠습니다.

 

# npm install

 

npm install
or
npm i

모든 dependencies을 설치합니다. 

^ 나 ~ 사용한다면 정확한 버전을 설치하지 않을 수 있습니다.

npm install package-lock.json 새 dependencies을 설치할 때와 같이 변경사항이 있으면 업데이트 됩니다.

 

 

# npm ci

 

npm ci

(npm clean-install)

package-lock.josn에 명시되어있는 패키지 정보와 같은 버전의 패키지를 node_modules에 설치합니다.

따라서 협업을 할 때 같은 버전의 패키지를 사용하기 위해선 npm ci를 사용해야합니다.

자동화 테스트 및 CI/CD환경이라면 더더욱 사용해야합니다.

 

 

# npm i와 npm ci의 차이점

 

협업을 하고 있다면 npm install 은 새로운 패키지를 설치하고 업데이트를 할 때 사용하고

로컬에 원격 저장소에서 받아온 패키지를 설치 할 때는 npm ci를 사용하면 되겠습니다.

 

pacagke-lock.json의 dependencies가 package.json의 dependencies와

일치하지 않으면 npm ci는 pacakge-lock.json을 업데이트하지 않고 오류와 함께 종료됩니다.

  • npm ci는 한 번에 전체 프로젝트만 설치할 수 있습니다.
  • node_moduels가 이미 있는 경우 npm ci가 설치를 시작하기 전에 자동으로 제거됩니다.
  • npm ci는 쓰기 권한이 없기 때문에 pacakge-lock.json을 수정하지 않습니다.
  •  pacakge-lock.json을 기반으로 동작하기 때문에  pacakge-lock.json가 필요합니다.
  • 실행속도는 npm ci가 더 빠릅니다. 

 

++) package-lock.json 이란?

 

package-lock.json npm node_moduels 트리 또는
pacakge.json을 수정하는 모든 작업에 대해 자동 생성됩니다.

 

협업시 package-lock.json을 사용해야합니다.

package.json과 package-lock.json을 함께 커밋하면

협업을 하는 다른 개발자는 clone을 받은 후 npm install or npm ci를 실행하여

같은 버전의 패키지를 사용할 수 있게됩니다.

 

package-lock.json은버전명이 정확히 명시되어있습니다.

package.json은 version ragne 를 사용하여 버전정보를 명시합니다.

두루뭉실한 거죠. 더 정확한 버전의 패키지를 설치하기 위해선

package-lock.json을 꼭  커밋 해주어야합니다.