yarn은 2016년 페이스북에서 개발한 패키지 관리자이다. 리액트(React)와 같은 프로젝트를 진행하며 겪었던 어려움을 해결하기 위해 개발되었고, npm과 같은 기능을 수행하나, npm 레지스트리와 호환하면서 속도나 안정성 측면에서 npm보다 향상되었다.
package.json이 존재하지 않으면 yarn init
으로 생성
패키지 설치
yarn
또는 yarn install
: package.json 파일 및 해당 종속성에 나열된 모든 모듈을 설치
yarn global <add/bin/list/remove/upgrade> [--prefix]
: 패키지를 시스템 전역에서 설치, 업데이트, 삭제한다.
yarn add package_name@버전
: 특정 패키지의 특정 버전 설치
yarn add 주소
: 특정 저장소 내 패키지 설치. 주로 github을 이와 같이 설치
yarn global add package_name
: 옵션. 글로벌로 설치. 로컬의 다른 프로젝트도 이 패키지를 사용 가능
devDependencies에 추가한다.
패키지 삭제
설치한 패키지들을 업데이트
yarn upgrade [package | package@tag | package@version | --scope @scope]... [--ignore-engines] [--pattern]
:
package.json에 명시된 범위내에서 패키지의 버젼을 최신으로 업그레이드
yarn upgrade --latest
: --latest옵션은 upgrade처럼 작동하지만 package.json의 범위가 아닌 최신버전으로 설치.
yarn upgrade left-pad@^1.0.0
: 직접 버젼을 설정
중복 설치된 패키지들을 정리
yarn 은 다운받은 패키지 데이터를 캐시(cache)에 저장하여, 중복된 데이터는 다운로드 하지않고, 캐시에 저장된 파일을 활용함으로써, npm 에 비해 패키지 설치속도가 매우 빠르다.
여러개의 패키지를 설치할 때 병렬로 처리하기 때문에 performance 와 speed가 증가된다. (npm 은 순차적)
npm 은 패키지가 설치될 때 자동으로 코드와 의존성을 실행할 수 있도록 허용했다.
이 특징은 편리하면서도 안정성을 위협할 수 있다.
특히, 보장된 정책없이 등록한 패키지가 존재할 수 있다는 점에서 더욱 위험도가 높다.
반면, yarn은 yarn.lock 이나 package.json으로 부터 설치만 하면, yarn.lock 은 모든 디바이스에서 같은 패키지를 설치하는 것을 보장하기 때문에 버전의 차이로 인한 버그를 방지할 수 있다.