Package Manager 시작하기

윤태규·2023년 11월 22일

01. Package Manager

1) Package 란?

📌 **Node.js**에서 **코드의 재사용성**을 높이기 위해 작성된 **독립적인 코드 조각**을 “**모듈**”이라고 부릅니다. 이러한 모듈을 **`npm`**이나 **`yarn`**과 같은 패키지 매니저를 통해 업로드하여 다른 개발자들과 공유할 때, 이를 **패키지(Package)**라고 합니다.
  • 모듈(Module)은 일반적으로 프로젝트 내에서 사용되는 코드 조각을 의미하며, 패키지는 이러한 모듈을 포함하고 있거나 다른 패키지에 의존하고 있는 코드의 집합을 의미합니다.
  • 패키지는 다른 패키지를 사용할 수 있습니다. 이런 관계를 의존 관계라고 부릅니다.
    - ex) **A** 패키지가 B 패키지의 기능을 필요로 한다면, A 패키지는 B 패키지에 “의존”한다고 합니다.
    2) Package Manager 란?
  • 패키지 매니저(Package Manager)는 패키지를 손쉽게 다루는 작업을 안전하고 편리하게 사용하기 위한 툴입니다. Node.js 패키지의 설치, 업데이트, 삭제 등을 할 수 있으며, 패키지간의 의존성을 관리해줍니다!
  • 다른 개발자들이 작성한 코드를 쉽게 다운로드 받거나, 혹은 저희가 작성한 코드를 배포하여 다른 사람들에게 제공할 수 있게 됩니다.
  • 패키지 매니저의 진정한 가치는, 여러 개발자들이 만든 수많은 패키지들을 효과적으로 활용하여, 자신의 프로젝트를 더 빠르고, 안정적으로 만들 수 있습니다.
    • 만약, 패키지 매니저가 없었다면, 각각의 패키지를 일일이 찾아서 코드를 복사하거나, .zip 파일 형식으로 다운로드 받아 직접 관리하는 번거로움이 있었겠죠? 🥲
  • Node.js에서 대표적으로 사용하는 패키지 매니저는 npmyarn이 존재합니다.
  • 3) npm 이란?
    • npm은 자바스크립트에서 사용할 수 있는 패키지(모듈) 관리자입니다. "Node.js를 사용하는데 필요한 패키지를 설치해주는 프로그램" 이라고 생각하시면 좋습니다 🙂
      - npm을 통해 여러분이 사용할 라이브러리를 쉽게 설치하고 버전을 관리할 수 있고, 제거할 수도 있습니다.
      - Node.js를 설치할 때 함께 설치되므로, Node.js의 가장 대표적인 패키지 매니저입니다.
      - npmjs.com 에서 누구나 새로운 패키지를 등록할 수 있고, 설치할 수 있습니다.
      - Node Package Manager의 약자로 npm이라는 이름을 가졌지만, 지금은 Node.js와 관계없이 프론트엔드에서만 사용 가능한 자바스크립트 패키지들도 등록되어 있습니다.
      4) yarn 이란?
  • npm의 대체제로 Facebook이 2016년에 출시한 패키지 매니저로, npm의 대체제로서 등장했습니다.
  • npm에서 부족한 부분을 보완하여 편리한 기능과 보안 성능이 향상된 패키지 매니저입니다.
  • yarn은 패키지를 다운로드 하는 과정에서 해당하는 패키지의 보안 검사를 수행합니다. 패키지 내부에 위험한 스크립트가 다운로드 되거나, 종속성 문제가 발생하는 것을 방지할 수 있습니다.
  • yarn은 병렬 처리를 도입하여, 패키지 설치 속도가 npm보다 빠르다는 장점이 존재합니다. 즉, 패키지를 하나씩 설치하는 것이 아닌, 여러개를 동시에 설치할 수 있습니다.
    5) package.json 이란?
  • package.json은 Node.js 프로젝트의 가장 핵심적인 파일이며, 프로젝트에 대한 정보와 설치한 패키지들의 버전을 관리할 때 사용하는 파일입니다.
  • 동일한 패키지라도 버전에 따라 기능이 다르기 때문에 특정 버전을 설치하고 관리해야 할 때 필요합니다.
  • package.json파일에는 프로젝트명, 작성자, 라이센스 정보 등 일반적인 프로젝트의 메타 데이터 뿐만 아니라, 스크립트를 실행할 수 있는 필드 또한 포함되어 있습니다.
  • npmyarn 모두 동일한 package.json 파일을 참조합니다.
    6) package-lock.json과 yarn.lock 이란?
  • package-lock.json 또는 yarn.lock 파일은 package.json에서 정의한 패키지 외에도 node_modules에 들어있는 패키지들의 버전과 의존 관계가 상세하게 정의되어 있습니다.
  • 만약, node_modules 폴더가 존재하지 않더라도, 해당하는 lock 파일이 존재한다면 동일한 패키지 구조를 재설치 할 수 있습니다.
  • npm으로 패키지를 설치, 수정, 삭제할 때마다 패키지들의 정확한 의존 관계package-lock.json파일에 저장합니다.
  • yarn의 경우 패키지들의 상세한 의존 관계를 yarn.lock 파일에 저장합니다.
  • 이러한 lock 파일들은 개발 환경 간에 일관된 패키지 버전을 보장해주므로, 버전 관리에 매우 중요한 역할을 합니다. 다른 개발자가 같은 프로젝트를 클론(Clone)하거나 복제했을 때, 동일한 의존성을 가지게 해줍니다.
profile
끝까지 가자

0개의 댓글