참고자료:
https://docs.npmjs.com/cli/v7/commands/npm-ci
npm-ci | npm Docs
Install a project with a clean slate
docs.npmjs.com
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을 꼭 커밋 해주어야합니다.
'나를 위한 개발기록' 카테고리의 다른 글
javascript map() 리팩토링 (0) | 2023.03.05 |
---|---|
Git 원격에 올라간 commit 중 없애고 싶은 커밋 삭제 (0) | 2023.03.04 |
이미 create-react-app 했을 경우 typescript 적용하는 법 (0) | 2023.03.04 |
git 과거 커밋 수정하기 (0) | 2022.12.30 |
문자열 익숙해지기 (정규식) (1) | 2022.09.25 |