yarn 이란?
Yarn은 프로젝트 패키지 의존성을 관리하는 툴이며, 페키지 메니저이다. yarn 은 2016년 페이스북에서 발표됐으며 npm 보다는 조금 더 빠른 성능을 보유하고 있다고 한다.
yarn 의 장점
1. 빠른 Installation
- npm은 npm install 시 패키지들을 하나씩 순차적으로 설치하는 반면 yarn 은 yarn install 시 package.json 에 나열돼있는 의존성 패키지들을 동시에 병렬적 방식으로 한번에 설치를 진행한다. 그래서 설치 측면에서 npm 보다 빠르다는 장점이 있다.
2. 보안성
- yarn.lock, package.json 파일에 있는 의존성 페키지들만 설치를 진행하기 때문에 모든 디바이스에서 같은 패키지들을 설치하는 것을 보장하며 다른 버전이 설치되어 발생할 수 있는 버그들이 많이 줄어들었다.
3. 패키지 잠금 파일
- npm 에는 package-lock.json 이라는게 있다. yarn 에는 yarn.lock 이라는게 있다. 이 파일을 통해 패키지 버전 잠금을 지원한다. 이를 통해 프로젝트에서 의존하는 모든 패키지를 어느 환경에서든 항상 동일한 버전으로 설치할 수 있게 만들어 줬다.
yarn 사용법
yarn 을 사용하려면 먼저 설치를 진행해야 한다. node.js 를 설치하면 자동으로 함께 인스톨 되는 npm 을 이용해 yarn 설치를 진행해 줘야 한다.
yarn 은 당연히 전역으로 사용할것이기 때문에 global 로 설치를 진행해 준다.
🙂 yarn 설치
[ window ]
npm install -g yarn
[ mac ]
- homebrew 로 설치 시
$ brew install yarn
- nvm 으로 node 버전을 관리 시 : nvm 같은 버전 관리 툴을 사용한다면 node.js 의 설치를 제외시키고 설치 진행
$ brew install yarn --without-node
🙂 yarn 설치 및 버전 확인
$ yarn --version
$ yarn -v
🙂 yarn add
특정 페키지 설치 진행
$ yarn add { package 명 }
특정 페키지의 버전까지 지정하여 설치 진행
$ yarn add { package 명 }@{ version }
목적에 따른 사용 범주 지정하여 설치 진행
- devDependencies
$ yarn add { package 명 } --dev
- peerDependencies
$ yarn add { package 명 } --peer
- optionalDependencies
$ yarn add { package 명 } --optional
🙂 yarn remove
특정 페키지 삭제
$ yarn remove { package 명 }
🙂 yarn upgrade
특정 페키지 업그레이드
$ yarn upgrade { package 명 }
특정 페키지 버전 지정하여 업그레이드
$ yarn upgrade {package_name}@{version}
🙂 yarn install
node.js 에 package.json 에 정리 돼있는 의존성 라이브러리 module 들 설치 진행.
node_modules 폴더가 생성되고 그 안에 라이브러리들이 설치된다.
$ yarn install
$ yarn
yarn 의 설치 명령어를 그냥 yarn 만 해줘도 install 이 진행된다.
만약 install 진행중 네트워크 또는 여러가지 요인으로 TIMEOUT 오류가 발생했을때 아래와 같이 인스톨을 진행해보자.
$ yarn install --network-timeout 6000000
install이 최종적으로 완료되면 yarn.lock 이 자동으로 생성된다.
🙂 yarn.lock
yarn.lock 은 의존성 모듈들의 버전 정보가 정리돼있는 파일이다. 특정 라이브러리들의 하위 모듈 정보 및 버전까지 확인 가능하다.
정상 실행된 환경에서의 버전을 기록 저장함으로써 다른 실행 환경에서 install 을 진행했을때 정상적으로 설치가 되는것을 보장한다. 정말 많은 라이브러리들이 서로를 하위 의존성 모듈로 두고있는 경우가 있어 버전 차이로 인한 문제가 발생할 수 있다. 그렇기 때문에 정상 실행된 버전들을 기록 저장해두는 것이다.
'React' 카테고리의 다른 글
[React] digital envelope routines 에러 해결법 - Node.js 버전 문제 (0) | 2023.02.21 |
---|---|
[React] Context API 사용하기 (1) | 2023.02.04 |
[React] react-canvas-draw 에 CanvasDraw 에 그린 그림의 dataURL 을 File 로 변환시키는 javascript 로직 (0) | 2022.04.30 |
[React] VS code 플러그인 Reactjs code snippets 으로 코드 템플릿 자동 생성하기 - rsc (0) | 2022.03.20 |
[Node] Node.js 로 간단한 server 만들어 React 프로젝트에 사용하기 (0) | 2022.03.14 |