Yarn Berry의 enableGlobalCache 속성이란?

송인재·2024년 8월 3일
0

정의

Yarn Berry의 enableGlobalCache 속성 값이란?
enableGlobalCache는 전역 캐시 사용 여부를 결정하는 속성이다.

쉽게 말하자면, 패키지를 설치하고 참조할 때, 어디에 할 것인지다.


true / false 에 따른 차이

true일 경우에는 자신의 홈 디렉토리 안의 .yarn/cache에 설치하는 것이고,
false일 경우에는 폴더 내 안의 .yarn/cache에 설치하는 것이다.


그래서 언제 무엇을 써야해?

이것이 어떤 차이가 있는지는
설치하는 패키지들을 다른 모든 프로젝트에서도 동일하게 사용할 것인지,
아니면 프로젝트 내에서만 해당 패키지를 사용할 것인지에 결정하게 된다.

해당 프로젝트 이외에도 다른 프로젝트에서도
설치 없이 해당 라이브러리를 참조만으로 사용하게 하고 싶다면 True

아니다 각 버전마다 각자만의 라이브러리 버전을 관리하도록 하고,
해당 설치 패키지를 설치한채로 팀원들에게 공유할거다 하면 False
를 선택하면 된다.


해당 속성에 대한 필자의 생각

필자가 생각했을 때는 프로젝트 별로 패키지를 관리하는 것이 낫다고 생각한다.
패키지를 프로젝트 내에서 관리하기 때문에, 팀원들 중 한명이 설치를 하게 된다면
다른 팀원들은 해당 패키지를 설치할 필요없이 참조만 하여 사용하게 된다.
단순히 패키지 버전 공유를 떠나 설치한 파일부터 모든 팀원들과 공유를 하게 되는 것이다.

물론 해당 방식의 단점은 존재한다.
프로젝트 별로 중복되는 패키지들이 많이 존재할 것이다.
하지만 이 패키지를 프로젝트별로 모두 설치하기 때문에,
전역 캐시를 사용할 때보다 사용 용량이 비대해진다.

그리고 혹자는 전역 캐시의 사용의 장점으로
프로젝트 별로 일관된 패키지 버전의 사용을 장점으로 꽂는다.
나는 과연 이것이 큰 장점인지는 잘 모르겠다.

만약 react 17에서 18로 버전을 올리는 경우를 생각해보자.
한 프로젝트의 .yarn.lock에 명시되어 있는 react의 버전을 올린다.
그리고 다시 React 패키지를 설치한다.
이제 다른 프로젝트들에도 패키지의 일관성을 위해 yarn.lock의 버전을 수정한다.

하지만 실제로 패키지의 버전을 올리는 것은 이렇게 간단하게 이루어지지 않는다.
해당 프로젝트에서 사용중인 다른 패키지들과의 의존성도 신경써야 하므로,
각각의 프로젝트에서 문제들을 해결해나가며 차근차근 버전업을 해야한다.
그렇게 일관성을 유지하게 되고,
마지막으로는 홈 디렉토리의 react 17 패키지를 삭제한다.

번거롭다. 아직까지는 전역으로 관리해야할 필요성을 느끼지 못하겠다.

yarn에서는 enableGlobalCache의 기본값을 True로 하여,
왜 전역 캐시 사용을 default로 했을까?

아무리 머리를 요리조리 굴려봐도
해당 속성을 false로 사용하는 경우가 많을 것 같은데,
내가 아직 개발을 시작하지 얼마 안된 코린이여서 그런 것일 수도 있겠다.

혹여나 다른 생각을 갖고 계신 분이 있거나,
제 설명에 틀린 것이 있다면 가르침과 말씀 부탁드립니다🙏
더 많이 배우고 싶습니다🙌

profile
꿈을 꾸고 도전하기🌟

0개의 댓글