1. npm (Node Package Manager)
자바스크립트 언어를 위한 패키지 관리자로 노드를 설치시 자동으로 설치되는 기본 패키지 관리자이다. (node.js에 내장)
노드로 만들어진 공개된 모든 모듈을 웹에서 받아서 설치하고 관리해주는 프로그램으로 간단한 command로 이용할수 있다. (=java의 maven)
commend-line client인 npm과 온라인 데이터베이스인 npm registry로 이루어져 있다.
2. yarn
2016년 페이스북에서 개발한 패키지 관리자이자 npm과 같은 기능을 수행한다.
npm의 단점인 속도, 안정성, 보안성을 향상시키기 위해 만들어진 매니저툴이다
Yarn: A new package manager for JavaScript
In the JavaScript community, engineers share hundreds of thousands of pieces of code so we can avoid rewriting basic components, libraries, or frameworks of our own. Each piece of code may in turn depend on other pieces of code, and these dependencies are
engineering.fb.com
설치방법
yarn은 npm을 통해 설치가능하다.
npm i yarn --global
3. 차이점
둘의 차이점 중 하나는 패키지 설치 프로세스를 처리하는 방법이다.
npm은 패키지를 한번에 하나씩 순차적으로 설치하지만 yarn은 여러 패키지를 동시에 가져오고 설치하도록 최적화 되어있다. yarn은 다운받은 패키지 데이터를 캐시(cache)에 저장하여 중북된 데이터는 다운로드하지 않고 캐시에 저장된 파일을 활용함으로써 이론적으로 npm 보다 설치속도가 매우 빠르다 여러 패키지를 설치할때 병렬로 처리하기 때문에
보안측면에서도 yarn이 npm보다 안전하다고 알려져있다
npm은 패키지가 설치될때 자동으로 코드와 의존성을 실행할 수 있도록 허용했기에 편리하지만 안정성이 취약하다.
특히나 보장된 정책 없이 등록한 패키지가 존재할 수 있다는 점에서 더욱 위험도가 높다
npm은 자동으로 패키지에 포함된 다른 패키지 코드를 실행하여 보안시스템에 몇가지 취약성이 발생할수 있다.
이에 비해 .yarn은 yarn.lock 또는 package.json파일에 있는 파일만 설치하며 yarn.lock은 모든 디바이스에 같은 패키지를 설치하는 것을 보장하기 때문에 버전차이로 인해 생기는 버그를 방지해 줄수 있다.
4. 명령어
command | npm | yarn |
packge.json produce | npm init | yarn init |
dependencies install | npm install / npm i | yarn / yarn install |
package install | npm install [packge name] | yarn add [packge name] |
package version
|
npm install [packgae name]@version | yarn add [packge name]@version |
devDependencies install
|
npm install --save-dev [pkg] / npm i -D [pkg] | yarn add --dev [packge name] |
global install | npm install --global [pkg] / npm i -g [packge name] | yarn global add [packge name] |
package delete | npm uninstall [packge name] | yarn remove [packge name] |
devDependencies delete | npm uninstall --save-dev [packge name] | yarn remove [packge name] |
global delete | npm uninstall --global [packge name] | yarn global remove [packge name] |
update / packge update | npm update / npm update [packge name] | yarn upgrade/ yarn upgrade [packge name] |
중복된 패키지 정리 | npm dedupe |