yarn
yarn
Facebook 에서 만든 JavaScript Package Manager 이다
왜 만들었는가?
코드 베이스가 커지면서 npm 을 사용했을 때 안정성, 성능, 보안에 대한 이슈가 발생하여 Facebook, Google, Exponent, Tilde 개발자들이 npm client를 대체할 패키지를 만들게 되었다
npm 이슈?
- 성능 이슈
- 라이브러리 설치가 병렬적이지 않고, 의존성 라이브러리를 하나하나 다운받다보니 성능이 굉장히 저하됨
- 보안 이슈
- 오프라인 환경 혹은 외부 방화벽이 차단되어 있는 환경에서 의존성 라이브러리들을 다운로드 받을 수 없다.
- 그 외에 여러 이슈들이 있음
yarn vs npm
- No Cache, No node_moduels, No locks
- npm install : 1분 29초
- yarn install : 24초
설치
- npm
$ npm i -g yarn
- mac
$ brew install yarn
- ubuntu
$ sudo apt-get update && sudo apt-get install yarn
- yarn update ( currently not available )
$ yarn self-update
사용
-
프로젝트 초기화
- npm 처럼 package.json을 생성한다
- 이미 package.json이 있는 경우 재사용한다
$ yarn init -
모듈 설치
$ yarn install [package-name]@[version-or-tag] [options]
-
패키지 추가
npm install --save와 같은 의미
$ yarn add [package-name]@[version-or-tag] // production$ yarn add --dev [package-name]@[version-or-tag] // development$ yarn add file:/path/to/local/folder // 로컬 폴더 추가$ yarn add file:/path/to/local/tarball.tgz // 로컬 파일 추가$ yarn add <git remote url> // git repository 추가$ yarn add https://my-project/package.tar.gz // URL 추가 -
패키지 삭제
$ yarn remove [package-name]@[version-or-tag]
- Global 패키지 설치
$ yarn global add [package-name]@[version-or-tag]
- Global 패키지 삭제
$ yarn global remove [package-name]@[version-or-tag]
- 캐시 삭제
$ yarn cache clean
- 의존성 라이브러리 설치
$ cat package.json
...
"dependencies": {}
"devDependencies": {
"babel-core": "^6.7.0",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0"
}
...
migration
yarn은 npm, bower 워크 플로우에 모두 호환성을 가지고 있으며 mixing registries를 지원하기 떄문에 별다른 작업 없이 바로 yarn을 사용할 수 있다