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
Shell
복사
•
mac
$ brew install yarn
Shell
복사
•
ubuntu
$ sudo apt-get update && sudo apt-get install yarn
Shell
복사
•
yarn update ( currently not available )
$ yarn self-update
Shell
복사
사용
•
프로젝트 초기화
◦
npm 처럼 package.json을 생성한다
◦
이미 package.json이 있는 경우 재사용한다
$ yarn init
Shell
복사
•
모듈 설치
$ yarn install [package-name]@[version-or-tag] [options]
Shell
복사
•
패키지 추가
◦
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 추가
Shell
복사
•
패키지 삭제
$ yarn remove [package-name]@[version-or-tag]
Shell
복사
•
Global 패키지 설치
$ yarn global add [package-name]@[version-or-tag]
Shell
복사
•
Global 패키지 삭제
$ yarn global remove [package-name]@[version-or-tag]
Shell
복사
•
캐시 삭제
$ yarn cache clean
Shell
복사
•
의존성 라이브러리 설치
$ cat package.json
...
"dependencies": {}
"devDependencies": {
"babel-core": "^6.7.0",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0"
}
...
Shell
복사
migration
yarn은 npm, bower 워크 플로우에 모두 호환성을 가지고 있으며 mixing registries를 지원하기 떄문에 별다른 작업 없이 바로 yarn을 사용할 수 있다
참고
•
https://code.facebook.com/posts/1840075619545360
•
https://yarnpkg.com/en/compare
•
https://yarnpkg.com/en/docs/install#mac-tab
•
https://yarnpkg.com/en/docs/getting-started