npm ci? yarn ci?

오호·2022년 5월 20일
2

Node.js

목록 보기
5/5
post-thumbnail
post-custom-banner

npm install? npm i? npm ci? 무슨 차이가 있을까?
이 커맨드 모두 기본적인 동작은 의존성 패키지들을 설치하는 것이지만 서로 다른 방향으로 동작한다.

위 커맨드들은 아래 파일들과 연관성이 있다.

  • package.json
  • package-lock.json

package.json 파일은 우리가 설치하려고 하는 모듈에 대한 의존성 목록을 가지고 있다.

하지만 중요한 점은 이 package.json의 의존성 목록들은 정확한 버전이 아닌 range로 관리되어진다는 점이다.

{ 
  "next": "^12.1.0",  
  "redux" : "^4.1.2",
}

이로 인해 발생할 수 있는 이슈는 팀원끼리 서로 다른 버전의 node_modules 를 생성할 수 있다는 것이다.

npm install 실행한다면, 서로 다른 버전을 가지는 모듈을 가지는 경우가 생길 수 있다.

이런 문제점을 해결하기 위해서 package-lock.json파일이 존재하는 것이다.

{
  react@^17.0.2: 
  	version "17.0.2"
}

정확한 버전이 명시되어있기 때문에 package.json을 기준으로 했을 때 보다 정확한 의존성 모듈을 설치할 수 있게 되는 것이다.

그 커맨드가 바로!

npm ci

여담이지만, npm install 에 비해 npm ci 가 특정 케이스에서는 훨씬 빠르다고 한다.

이미 버전이 정확하게 명시된 package-lock.json 을 기반으로 설치하기 때문에 설치할 버전을 알아내야하는 npm install 보다는 빠를 수 밖에 없다.

하지만 반대로 특정 케이스에서는 느릴 수도 있다. npm ci 는 우선 node_modules 을 삭제한다고 했다.

삭제하는 과정이 필요하기 때문에 만약에 node_modules 가 존재하고 삭제해야하는 연산이 길어진다면, npm install 보다 느릴수도 있다.

yarn

yarn에서는 다음과 같은 커맨드로 yarn ci를 실행시킨다.

yarn install --frozen-lockfile

or

yarn install --immutable --immutable-cache --check-cache
profile
오호
post-custom-banner

0개의 댓글