반응형
기존 프로젝트에서 사용하던 npm과 yarn1의 단점
- npm
- 비효율적인 의존성 탐색
- lock 파일이 없어서 생기는 의존성 이슈 문제 (npm도 추후에 npm5 버전 업데이트 이후로 package-lock.json을 생성하여 패키지 잠금을 지원하게 되었다.)
- (해당 이슈에 대해 알아보던 중 초기 기사문을 읽어볼 수 있었다.)[https://www.bloter.net/newsView/blt201604040002]
- 보안이슈
- 패키지가 늘어날수록 성능저하 발생
- 위 문제 해결을 위해 facebook을 중심으로 google 등 회사들이 npm의 문제를 해결하기 위해 새로운 패키지 매니저인 yarn을 발표하였다.
- yarn
- 왼쪽이 npm, 오른쪽이 yarn 방식이다.
- 다운받은 패키지 데이터를 cache에 저장하여 중복된 데이터는 설치하지 않고, 캐시에 저장된 파일을 활용함으로써 패키지 설치 속도가 빠르다는 장점이있다.
- 유령 의존성(Phantom dependencies) : 직접 의존하지 않은 패키지를 암묵적으로 참조할 수있게 된다. 그러면 다른 의존성 파일을 지웠을때 암묵적으로 참조했던 패키지도 삭제되기 때문에 문제가 생길 수 있다.
- +) 추가 npm 과 yarn의 단점
- 보통 프로젝트 진행시, node_modules은 용량이 커서 gitignore에 포함하여 github에는 올리지 않을 것이다. 이 때문에 협업시 git pull 하여 작업을 이어하게 되면 매번 npm 또는 yarn 명령어를 사용하여 node_modules 파일을 재설치해야하는 번거로움이 있다.
yarn berry
- yarn berry
- PnP (Plug n Play) 전략을 사용한다.
- 패키지 설치시 더이상 node_modules에 저장되지 않는다. 대신 .yarn폴더가 생성되고 .yarn/cache 폴더에 해당 패키지의 의존성 정보가 저장되고 .pnp.js 파일에 의해 의존성을 찾을 수 있는 정보가 기록된다. > ZIP아카이브로 관리되게 되어 각 압축파일들이 존재한다.
- Zero-install : .yarn 폴더 자체를 원격 저장소에 업로드하여 추가 yarn or npm 설치 필요없이 프로젝트를 바로 실행할 수 있다.
- Zero-install 사용할 때
-
.yarn/* !.yarn/cache !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/sdks !.yarn/versions
- Zero-install 사용하지 않을 때
-
.pnp.* .yarn/* !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/sdks !.yarn/versions
- PnP (Plug n Play) 전략을 사용한다.
* 참고자료
'🔥 🔥' 카테고리의 다른 글
[강의] 그림으로 쉽게 배우는 운영체제 - 1. 프로세스와 쓰레드 (0) | 2024.05.13 |
---|---|
[강의] 그림으로 쉽게 배우는 운영체제 - 0. 운영체제 들어가기 (0) | 2024.05.13 |
JavaScript 일급 객체 (first class citizen) (0) | 2021.04.14 |
디바운스(Debounce)와 스로틀(Throttle) 알아보기 (0) | 2021.04.11 |
자바스크립트의 원시값(Primitive Type)과 참조값(Reference Type) (0) | 2021.04.06 |