협업 관점에서의 패키지 매니저

pengooseDev·2023년 7월 13일
1
post-thumbnail

패키지 매니저

당신은 어떤 패키지 매니저를 사용하는가? npm, yarn, pnpm?

각 패키지 매니저의 장단점은 다른 글들에서 굉장히 많이 다루고 있으니, 사람들이 잘 다루지 않는 관점.

"협업"의 관점에서 패키지 매니저를 살펴보자.


npm

협업 단계에서 npm이 가진 취약점을 알고있는가?
당신이 아무 생각없이 의존성 모듈을 설치하기 위해

> npm i

를 실행하는 순간 VSC가 오류를 잡아내면 그나마 다행이다.

npm i 또는 npm istall은 현재 로컬 환경의 NodeJS의 버젼에 맞는 가장 최신 라이브러리를 설치하기 때문이다.

협업자 A의 컴퓨터의 NodeJS version은 14.20.1
협업자 B의 컴퓨터의 NodeJS version은 18.16.1

위의 상황에서 각 A와 B의 로컬 환경에 설치되는 의존성 모듈의 version이 달라 예기치 못한 에러가 발생할 가능성이 굉장히 높다는 것이다.

그래서 우리는 이러한 문제를 해결하기 위해 NVM를 이용해 협업자 간의 NodeJS 버젼을 동기화하거나 npm i --no-shrinkwrap를 이용해 package.json에 명시되어있는 version의 의존성 모듈을 설치하게 된다.


NVM(Node Version Manager)

말 그대로 NodeJS의 version을 관리할 수 있다.
협업자 A와 B가 동일한 version의 NodeJS를 사용한다면, 문제가 발생하지 않는다.

nvm ls // 현재 설치된 NodeJS 버젼 확인
nvm use 14.20.1 // 14.20.1 버젼 사용!


npm i --no-shrinkwrap

package.json에 명시되어있는 version의 의존성 모듈을 설치한다.
해당 명령어를 사용한다면 nvm 없이 의존성 모듈의 동기화가 가능하다.


위에 작업은 너무 귀찮아요😨 : yarn, pnpm

그래서 yarn은 yarn.lock을 pnpm은 pnpm.lock-yaml을 제공한다.

그냥 설치된 의존성 모듈의 버젼을 고정해버리고, 의존성 모듈을 설치할 경우, 해당 데이터를 참고하여 일관된 version의 의존성 모듈을 설치하는 것이다.

얍삐- 🥳

0개의 댓글