본문 바로가기
L'etude

npm ci를 하는 이유

by hxunz 2022. 11. 13.

https://long-factory-3d5.notion.site/npm-ci-e550d69fe35e4cb8945835aad1446c54

 

npm ci

1. npm ci 란 무엇인가?

long-factory-3d5.notion.site

1. npm ci 란 무엇인가?

ci라 함은 Contiuouse Integration (지속적인 통합) 이라는 의미입니다.

npm install 과 커맨드가 유사하나, npm install을 사용하는 것보다 두배정도가 빠릅니다.

 

2. npm ci의 장점은 무엇인가?

npm ci 의 장점을 빠른 설치 속도라고 이야기 하고 있습니다. npm install 과 커맨드가 유사하나, npm install을 사용하는 것보다 두배정도가 빠릅니다.

package-lock.json 등의 lockfile을 기준으로 package를 설치하게 되어 있으므로, 규모가 큰 조직에서 package에 대한 lockfile이 승인되면, npm ci를 활용하여 package-lock.json에 명시되어 있는 패키지를 설치하도록 합니다.

만약, package.json내의 파일과 package-lock.json 내의 버전 등이 다르면, package-lock.json을 기준으로 package.json 파일을 수정하며, 명시되지 않은 부분에서는 오류를 발생시키므로, Application 관리에 있어서 안정성을 확보할 수 있다고 이야기 하고 있습니다.

 

3. npm i vs npm ci

공통점

npm install 과 npm ci 모두 결과적으로는 두 명령어 모두 의존성 목록을 설치하는것입니다.
package.json 을 읽어 의존성 목록을 만들고 package-lock.json 을 통해 설치할 의존성의 버전을 알려주는 것입니다.
두 방식 모두 package-lock.json을 먼저 확인하고 만약 존재하면 해당 lockfile을 이용해서 의존하고 있는 패키지 정보를 파악하고 node_modules에 설치합니다.
그리고 node_modules나 package.json에 변화가 생기면 package-lock.json을 업데이트하여 의존 패키지 정보를 기록합니다.

차이점

npm install 명령어는 package.json, package-lock.json 에 모두 쓰기 권한을 가집니다.
npm ci 는 쓰기 권한이 없습니다.
npm ci는 package-lock.json에 명시되어있는 패키지 정보를 활용해서 완전히 정확한 버전의 패키지들을 설치해서 node_modules에 적대합니다. 
따라서 해당 명령어로 패키지를 설치하는 모든 개발자들이 동일한 버전의 패키지를 사용하고 있음을 보장할 수 있습니다. 
npm i와는 다르게 package-lock.json을 수정하지 않습니다. 
그리고 이 lockfile을 기반으로 동작하기 때문에 해당 파일이 반드시 필요합니다.

 

 

결론

새로운 패키지를 프로젝트에 추가할 때는 npm i
원격 저장소의 프로젝트를 로컬에 초기 설정할 때 npm ci
자동화 테스트 및 CI/CD 환경 pakage-lock.json을 수정하지 않기 위해 npm ci를 사용합니다.

'L'etude' 카테고리의 다른 글

next.js 버전 13 Rendering Fundamentals  (0) 2022.11.14
React Query vs RTK Query  (0) 2022.11.13
git에서 폴더명 대소문자 인식을 못할 때  (0) 2022.11.13
React : useMemo()  (0) 2022.06.27
localStorage  (0) 2022.06.20

댓글