[ Node ] Package Manager

ay0530·2023년 11월 1일
0
post-thumbnail

01. Package Manager

  • 패키지 다루는 작업을 안전하고 편리하게 사용하기 위한 툴
    - 패키지 : npm이나 yarn에 업로드 된 Node.js 모듈
  • 다른 사람들이 만든 코드를 다운받거나 자신의 코드를 배포할 수 있음
  • Node.js에서는 대표적으로 npm과 yarn을 사용

02. npm(Node Package Manager)

  • JavaScript에서 사용할 수 있는 패키지(모듈) 관리자
  • npm으로 라이브러리를 설치하고 버전을 관리하고 제거할 수 있음
  • 패지키 등록은 누구나 가능
  • npm 다운로드 사이트 : npmjs.com

03. yarn

  • npm의 대체제로 출시된 패키지 매니저
  • npm의 부족한 부분을 보완하여 편리한 기능이 추가되었고 속도가 더 빠름

npm과 yarn을 동시에 사용하면 문제가 생길 수 있다 !
=> 동시에 사용하지 않는 것을 권장

04. Package.json

  • 설치한 패키지들의 버전을 관리할 때 사용하는 파일
  • 동일한 패키지를 사용하더라도 버전별로 기능을 다르게 사용할 수 있음
    => 특정 버전을 설치할 때 필요
  • 프로젝트 명, 작성자, 라이센스 정보 등 다양한 메타 데이터 기록 가능
  • npm, yarn 모두 동일한 package.json 파일 참조
{
  "name": "my-nodejs-project",      // 프로젝트 이름
  "version": "1.0.0",              // 프로젝트 버전
  "description": "Node.js 프로젝트",  // 프로젝트 설명
  "main": "index.js",               // 진입점 파일
  "scripts": {
    "start": "node index.js",       // 사용자 정의 스크립트
    "test": "jest"                  // 테스트 스크립트
  },
  "keywords": ["node", "javascript"], // 프로젝트 키워드
  "author": "Your Name",            // 프로젝트 작성자
  "license": "MIT",                 // 라이선스 종류
  "dependencies": {                 // 종속성 목록
    "express": "^4.17.1",
    "mongoose": "^5.13.3"
  },
  "devDependencies": {              // 개발 시만 필요한 종속성 목록
    "jest": "^27.0.5"
  }
}

05. Package-lock.json

  • package.json 파일에서 정의한 패키지 외에도 node_modules에 들어있는 패키지들의 버전과 의존관계가 상세히 기록됨
  • npm으로 패키지를 설치, 수정, 삭제 할 때마다 패키지들의 의존 관계를 package-lock.json 파일에 저장
  • 저장된 패키지들은 정확히 일치하는 버전만 기록됨
    => 프로젝트에서 의존하는 패키지 버전을 정확하게 관리할 때 사용
  • 협업 시 Package-lock.json 파일을 공유하여 팀원들과 같은 환경으로 개발할 수 있음
{
  "name": "my-nodejs-project",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "axios": {
      "version": "0.21.1",
      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
      "integrity": "sha512-abcdefg...",
      "dependencies": {
        "follow-redirects": {
          "version": "1.13.0",
          "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
          "integrity": "sha512-abcdefg..."
        }
      }
    },
    "express": {
      "version": "4.17.1",
      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
      "integrity": "sha512-abcdefg...",
      "dependencies": {
        "accepts": {
          "version": "1.3.7",
          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
          "integrity": "sha512-abcdefg..."
        },
        // 다른 의존성 패키지들
      }
    },
    // 다른 의존성 패키지들
  }
}
profile
강아지 좋아

0개의 댓글