npm 특징
npm은 프로젝트의 의존성이 늘어날수록 node_modules 폴더가 거대해지고 복잡해지는 문제를 안고 있습니다. 이는 의존성을 검색하거나 설치할 때 효율성을 떨어뜨립니다. 또한, 다른 버전의 패키지가 중복으로 설치되는 문제와 유령 의존성이 발생할 수 있습니다.
yarn berry
Yarn Berry는 Yarn의 두 번째 버전으로, 2.x부터 시작하여 현재 4.x까지 이어져왔습니다. 이번 글에서는 Yarn Berry의 주요 특징과 혁신에 대해 알아보겠습니다.
먼저, Yarn Berry를 사용하기 위해서는 기본적으로 명시적인 의존 관계를 나타내야 합니다. 이는 코드의 가독성과 유지보수성을 높이는 데 도움이 됩니다.
Yarn Berry의 가장 주목할 만한 특징 중 하나는 패키지를 node_modules에 저장하는 것이 아니라, 패키지를 압축하여 .yarn/cache 폴더에 수평적으로 저장한다는 점입니다. 이를 Plug’n’Play(PnP)라고 부릅니다. 이 방식은 패키지를 빠르게 찾을 수 있게 해주며, 파일 개수가 감소하여 설치 속도를 높여줍니다. 또한, Zero Install을 이용하여 저장소에서 함께 관리할 수도 있습니다.
또 다른 중요한 특징은 팬텀 디펜던시가 발생하지 않는다는 것입니다. 이는 의존 관계를 명시적으로 정의하고 있기 때문에 발생하지 않는 현상으로, 프로젝트의 안정성과 신뢰성을 높여줍니다.
Yarn berry 의 Plug ‘n’ play (PnP) 방식 활용
yarn berry를 사용한 프로젝트 세팅
npm install -g yarn
yarn -v
yarn create react-app happy-party --template typescript
create react-app: boiler-plate
1. Yarn Berry : yarn의 버전을 berry로 변경
yarn set version berry
yarn 폴더, .yarnrc.yml 파일 생성됨
2.Node modules를 사용하지 않을 것이기 때문에 NodeLinker: pnp로 설정
// .yarnrc.yml
nodeLinker: pnp
⇒ yarn berry의 pnp 환경으로 프로젝트 세팅
3. vscode가 yarn이 만들어주는 zip파일을 잘 가져와서 의존성을 해석할 수 있도록 ZipFS plugin 설치
타입스크립트 세팅vscode는 zip 파일을 해석할 줄 모르기 때문이다.
yarn dlx @yarnpkg/sdks vscode
⇒ vscode에서 ctrl + p, 우측꺾쇠, select typescript … > use workspace version 선택
4. 필요없는 폴더 파일 삭제
node_modules 삭제
5. pnp.cjs 파일에서 위치와 의존성을 관리한다.
6. yarn install
Yarn Berry의 workspaces 기능 한계점
먼저, Plug’n’Play(PnP)는 기존의 패키지 관리 방식과는 다르기 때문에 사용하는 데 어색한 요소들이 있습니다. IDE에서 직접 사용하는 많은 도구들을 SDK를 통해 우회 호출할 수 있도록 추가적인 설정이 필요합니다. 이는 개발 환경을 설정하는 데 일부 노력이 필요하다는 것을 의미합니다.
또한, Yarn Berry를 사용하더라도 항상 Install이 빠른 것은 아닙니다. 패키지의 크기나 네트워크 속도 등에 따라 Install 시간이 달라질 수 있습니다.
또 다른 주요한 고려 사항은 Zero Install을 이용하여 압축 파일들을 가지고 작업하면 저장소 자체가 매우 커질 수 있다는 점입니다. 이는 프로젝트의 용량을 증가시키고 저장소 관리에 어려움을 초래할 수 있습니다. 또한, Zero Install이라고 해서 정말로 설치되지 않는 것은 아니므로 이를 염두에 두어야 합니다.
'개발공부' 카테고리의 다른 글
[Front] 테스트 주도 개발 (1) | 2024.06.04 |
---|---|
[FE] 짚고 넘어갈 기본 내용 (0) | 2024.03.10 |