Node Pacakage Manager
JavasScript 기반의 패키지 매니저
패키지 매니저: 프로젝트에 필요한 의존성 패키지를 관리하는 프로그램
의존성 패키지: 해당 프로젝트를 실행하는 데 꼭 필요한 라이브러리와 모듈
npm insatall react -> react 라이브러리 설치npm run start 같은 명령어로 프로젝트 실행, 테스트, 빌드 등을 쉽게 할 수 있음package.json으로 정의한 파일 또는 디렉터리node_modules 디렉터리 아래에 있는 파일 또는 디렉터리. 이 안의 파일이나 디렉터리는 repquire()로 읽을 수 있음. npm install로 설치한 패키지들이 저장됨.모든 패키지는 모듈이다
npm에 등록하지 않아도 패키지 포맷이 맞다면 npm install로 설치할 수 있음
reauire() 함수를 사용하면 module.paths에 있는 경로를 따라 모듈을 찾는데, 상위 디렉터리에 있는 패키지를 계속 타고 올라가며 node_modules를 확인하며 많은 I/O를 수행하게 된다 -> require()이 무거워짐
-> yarn이 나오게 된 계기!
package.json : 프로젝트 정보, 설치한 패키지 목록, 실행 스크립트 등 포함
node_modules/: 설치된 패키지들이 저장되는 폴더
package.json
{
"name": "sample-package",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
그외 등등
npm install == npm i == npm add
`npm install [<@scope>/]@<tag/version/version range>
<@scope>: 패키시 스코프. 네임스페이스<name>: 패키지명<tag/version/version range>: 태그/버전/버전 범위. 없는 경우 latest 사용JavaScript package manager
Node.js 환경에서 프로젝트의 라이브러리(패키지)를 설치, 관리하는 도구
npm과 같은 역할을 하지만 더 빠르고 안정적이고 일관성있는 패키지 관리를 목표로 만들어짐
예전 npm(특히 v4 이전)은 속도가 느리고 패키지 설치 결과가 개발자마다 달라 의존성 버전 충돌이 일어날 수 있으며 오프라인 설치가 어려웠음
| 항목 | npm | Yarn |
|---|---|---|
| 설치 속도 | 느렸지만(npm v7 이전) 최근 개선됨 | 빠름(병렬 설치) |
| 의존성 관리 | package-lock.json | yarn.lock |
| 오프라인 설치 | 지원 제한적 | 기본 지원 |
| 명령어 | npm install | yarn add |
| 초기 목적 | Node.js 기본 패키지 매니저 | npm의 단점 보완 |
| 명령어 | 설명 |
|---|---|
yarn init | 새 프로젝트 초기화(package.json 생성) |
yarn add 패키지명 | 패키지 설치 및 의존성 추가 |
yarn add 패키지명 --dev | 개발 의존성(devDependencies)으로 추가 |
yarn remove 패키지명 | 패키지 제거 |
yarn install | package.json 및 yarn.lock 기반 패키지 설치 |
yarn upgrade 패키지명 | 패키지 버전 업그레이드 |
yarn run 스크립트명 | package.json의 스크립트 실행 |
yarn global add 패키지명 | 전역 설치 |