npm, yarn

MONA·2025년 8월 15일

나혼공

목록 보기
90/92

npm

Node Pacakage Manager
JavasScript 기반의 패키지 매니저

패키지 매니저: 프로젝트에 필요한 의존성 패키지를 관리하는 프로그램
의존성 패키지: 해당 프로젝트를 실행하는 데 꼭 필요한 라이브러리와 모듈

주요 기능

  1. 오픈소스 패키지 설치
  • 타 개발자들이 만들어 둔 자바스크립트 라이브러리나 도구 설치
    ex) npm insatall react -> react 라이브러리 설치
  1. 버전 관리
  • 설치한 패키지의 버전을 관리
  1. 의존성 관리
  • 프로젝트에서 사용하는 여러 패키지들이 어떤 라이브러리에 의존하고 있는지 자동으로 관리
  1. 스크립트 실행
  • 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"
}
  • name: 필수. 패키지명. 글자 수 제한 214자. 밑줄이나 점으로 시작할 수 없음. 대문자 비허용. URL 안전한 글자만 지원
  • version: 필수. 패키지의 버전. 버전 정보는 node-semver로 파싱이 가능해야 함
  • description: 패키지 설명. npm search로 패키지 검색 시 노출
  • keywords: npm search로 패키지를 찾을 때 이용
  • homepage: 프로젝트 홈페이지의 url
  • bugs: 버그를 제보할 이슈 트래커나 이메일 주소
  • license: 라이센스 정보
  • files: 패키지 설치 시 의존성으로 포함할 파일 리스트
  • main: 모듈을 프로그램에서 갖다 사용할 경우 진입점이 되는 파일. 보통 index.js나 main.js 사용
  • bin: 패키지에 실행 파일이 있을 경우 지정. npx 명령어로 실행
  • dependencies: 의존성 패키지명과 버전을 맵 형태로 관리
  • config: 패키지 스크립트에서 사용할 환경 변수 설정

그외 등등

npm install, npm uninstall

npm install == npm i == npm add

`npm install [<@scope>/]@<tag/version/version range>

  • <@scope>: 패키시 스코프. 네임스페이스
  • <name>: 패키지명
  • <tag/version/version range>: 태그/버전/버전 범위. 없는 경우 latest 사용

Yarn

JavaScript package manager
Node.js 환경에서 프로젝트의 라이브러리(패키지)를 설치, 관리하는 도구

npm과 같은 역할을 하지만 더 빠르고 안정적이고 일관성있는 패키지 관리를 목표로 만들어짐

npm과 yarn

예전 npm(특히 v4 이전)은 속도가 느리고 패키지 설치 결과가 개발자마다 달라 의존성 버전 충돌이 일어날 수 있으며 오프라인 설치가 어려웠음

항목npmYarn
설치 속도느렸지만(npm v7 이전) 최근 개선됨빠름(병렬 설치)
의존성 관리package-lock.jsonyarn.lock
오프라인 설치지원 제한적기본 지원
명령어npm installyarn add
초기 목적Node.js 기본 패키지 매니저npm의 단점 보완

주요 특징

  1. 빠른 설치 속도: 패키지를 캐시에 저장해 같은 패키지 재설치 시 매우 빠름
  2. Lockfile(yarn.lock): 설치된 패키지의 정확한 버전을 기록해 모든 개발 환경에서 동일한 의존성을 보장함
  3. 오프라인 설치: 이전에 설치한 패키지는 인터넷 없이도 재설치가 가능함
  4. 병렬 다운로드: 여러 패키지를 동시에 설치해 속도를 향상시킴
  5. 명령어 단순화: 직관적인 명령어로 패키지 관리 가능

기본 명령어

명령어설명
yarn init새 프로젝트 초기화(package.json 생성)
yarn add 패키지명패키지 설치 및 의존성 추가
yarn add 패키지명 --dev개발 의존성(devDependencies)으로 추가
yarn remove 패키지명패키지 제거
yarn installpackage.json 및 yarn.lock 기반 패키지 설치
yarn upgrade 패키지명패키지 버전 업그레이드
yarn run 스크립트명package.json의 스크립트 실행
yarn global add 패키지명전역 설치
profile
고민고민고민

0개의 댓글