npm install 과 버전 문제

오준상·2021년 1월 4일
4
post-thumbnail

npm install

npm install은 package.json에 있는 dependency가 있는 library들을 다운받는 명령어 이다.
package.json은 dependency version을 ^를 이용하여 다운로드 한다.

이 때, ^는 어떤 방식으로 구동될까?

다음과 같이, ^1.1.0으로 표기되어 있을 경우에 1.1.0에서 2.0.0의 범위를 가지고 있다고 내포하고 있다.
하지만 0.0.x부터는 miner version을 범위로 치기때문에, 2번째 범위인 ^0.0.1이면 0.0.1 <= version 0.1.0임

문제점

이 때, package.json은 범위로 version을 표기하다 보니, 협업하는 과정에 version 오류가 생길 가능성이 있다.

해결방법

그럼 어떤 방법으로 다음과 같은 issue를 해결할 수 있을까?
바로 npm ci를 이용해서 해결하는 방법이 있다. npm ci는 package.lock.json을 사용한다.

package.lock.json

package.lock.json은 무엇이 다른가?
그것은 version의 범위를 표기하는 package.lock.json과는 달리, version의 정확한 숫자를 제시한다.
다음 사진을 보자.

다음과 같이, 한가지 library를 찝었을 때, 그 library가 의존하는 다른 library도 적혀있고, 그 library의 정확한 version이 제시되어 있다.
그리고 그 library version에 맞는 코드 Url도 제시되어 있다.

다음과 같이 정확한 version으로 다운로드 하는 npm ci는 version 문제를 발생시키지 않는다.
그리고 npm install 보다 평균적으로 2배, 혹은 그 이상 더 빠르다.

다음은 npm install의 결과이다.

그 다음은 npm ci의 결과이다. 2배는 아니더라도, 1.7배정도 빠르다.

하지만 npm ci는 실행할 경우 node_modules를 항상 삭제하고 다시 실행한다.

결론

npm install과 npm ci를 사용해야 하는 때를 잘 구분하여 사용하자.
p.s 사실 ci는 지속적 통합을 의미하는 ci이고, ci 환경 세팅때 사용하기 위해 만들어 졌다.

profile
만들고싶은걸만듭니다

0개의 댓글