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.jsonyarn.lock 기반 패키지 설치
yarn upgrade 패키지명패키지 버전 업그레이드
yarn run 스크립트명package.json의 스크립트 실행
yarn global add 패키지명전역 설치
profile
고민고민고민

0개의 댓글