dh_0e

[Node.js] 강의 내용 개념 정리(3) (Package, Package Manager - npm, yarn) 본문

내일배움캠프/Node.js[입문]

[Node.js] 강의 내용 개념 정리(3) (Package, Package Manager - npm, yarn)

dh_0e 2024. 5. 15. 01:00

Package

- Node.js에서 "모듈"npm이나 yarn과 같은 패키지 매니저를 통해 업로드하여 다른 개발자들과 공유할 때 이를 패키지(Package)라고 함

 

모듈(Module)

- 프로젝트 내에서 사용되는 코드 조각을 의미

- 패키지는 이러한 모듈을 포함하고 있거나 다른 패키지에 의존하고 있는 코드의 집합을 의미

- 패키지는 다른 패키지를 사용할 수 있음. 이런 관계를 의존 관계라 부름

 

[Node.js] 강의 내용 개념 정리(4) (웹 프레임워크, Express.js, Module)

웹 프레임워크(Web Framework)- 웹 서비스를 빠르게 구현할 수 있게 도와주는 도구- 프로그래밍의 특정 부분을 추상화하여, 개발자가 더 높은 수준에서 프로그램을 작성할 수 있게 도와주는 도구- '

dh-0e.tistory.com

 

 

패키지 매니저(Package Manager)

- 패키지를 손쉽게 다루는 작업을 안전하고 편리하게 사용하기 위한 툴

- Node.js 패키지의 설치, 업데이트, 삭제 등을 할 수 있으며, 패키지간의 의존성을 관리해줌

- 다른 개발자들이 작성한 코드를 쉽게 다운로드 받거나, 본인의 코드를 배포할 수 있음

- 수많은 패키지들을 효과적으로 활용하여, 자신의 프로젝트를 더 빠르고, 안정적으로 만들 수 있게 해줌

- Node.js에서 대표적으로 사용하는 패키지 매니저로 npm과 yarn이 있음

 

npm(node package manager): JavaScript에서 사용할 수 있는 패키지(모듈) 관리자

- 라이브러리를 쉽게 설치하고 관리, 제거할 수 있음

- Node.js의 대표적인 패키지 메니저

- nmpjs.com에서 이용할 수 있음

 

yarn: npm의 대체제로 Facebook이 2016년에 출시한 패키지 매니저

- npm에서 부족한 부분을 보완하여 편리한 기능과 보안 성능이 향상된 패키지 매너저

- 패키지를 다운로드하는 과정에서 패키지의 보안 검사 수행, 종속성 문제가 발생하는 것을 방지

- 병렬처리를 도입하여, 패키지 설치 속도가 npm보다 빠름. 즉, 패키지를 하나씩이 아닌 여러개를 동시에 설치 가능

하나의 프로젝트에선 npm과 yarn을 동시에 사용할 경우 문제가 발생하거나 충돌(Conflict)이 발생할 수 있음

- 하나의 프로젝트에선 두 패키지 매니저를 혼용하여 사용하는 것은 피하는게 좋음

 

package.json: Node.js 프로젝트의 가장 핵심적인 파일, 프로젝트에 대한 정보와 설치한 패키지들의 버전을 관리할 때 사용하는 파일

- 동일한 패키지도 버전에 따라 기능이 다르므로 특정 버전을 설치하고 관리해야 할 때 필요함

- 프로젝트명, 작성자, 라이센스 정보 등 일반적인 프로젝트의 메타 데이터 뿐만 아니라, 스크립트를 실행할 수 있는 필드 또한 포함되어 있음

- npm, yarn 모두 동일한 package.json 파일을 참조

 

package-lock.json, yarn.lock: package.json에서 정의한 패키지 외에도 node_modules에 들어있는 패키지들의 버전과 의존 관계가 상세하게 정의되어 있음

- node_moduels 폴더가 없더라도 해당하는 lcok파일이 존재한다면 동일한 패키지 구조를 재설치 가능

- npm으로 패키지를 설치, 수정, 삭제할 때마다 패키지들의 정확한 의존 관계를 package-lock.json 파일에 저장

- yarn에선 패키지들의 상세한 의존 관계를 yarn.lock 파일에 저장

- 이러한 lock 파일들은 개발 환경 간에 일괄된 패키지 버전을 보장해줌, 버전 관리에 매우 중요한 역할을 함

- 다른 개발자가 같은 프로젝트를 클론하거나 복제했을 때, 동일한 의존성을 가지게 해줌

 

yarn 설치하기

1. npm install -g yarn - yarn 설치

2. yarn init - yarn 적용

3. yarn add [패키지 명] - 띄어쓰기 구분으로 여러 개의 패키지 설치 가능

 

yarn -v : yarn 버전 확인

node_moduels는 yarn add 명령어를 통해 설치된 패키지들이 저장되는 폴더

package.json 파일에 작성된 각 패키지와 그 패키지가 의존하는 다른 패키지 또한 모두 node_modules에 저장됨

 

yarn 명령어: yarn.lock 파일과 package.json 파일을 기반으로 필요한 패키지를 설치하게 됨

- 작업한 프로젝트를 다른 사람에게 공유하거나 다른 사람의 프로젝트를 새롭게 시작할 때 패키지를 설치하기 위해 실행하는 명령어

 

yarn install

- package.json에 들어있는 라이브러리들을 현재 디렉토리에 설치

 

dependencies vs devDependencies

dependencies: yarn add (패키지 명) 명령어를 통해 설치한 패키지들이 나열되는 곳

- 프로젝트 실행과 배포시 필수적으로 필요한 패키지의 이름과 버전을 표시

 

devDependencies: yarn add -D (패키지 명) 명령어를 통해 설치한 패키지들이 나열되는 곳

- 개발 또는 빌드 단계에서 필요한 패키지들을 설치할 경우 이곳에 포함됨

>> 빌드 단계는 테스트 코드 실행이나, TypeScript를 JavaScript로 변경하는 단계를 의미

by ChatGPT

 

 

npm vs yarn (명령어)

출처: https://joshua1988.github.io/vue-camp/package-manager/npm-vs-yarn.html

 

정리

node_moduels: 이 폴더는 공유하거나 배포할 때 포함되서는 안 됨 >> package.json 파일과 yarn.lock 파일을 이용하여 동일한 패키지 버전을 설치할 수 있다.

package.json: 해당 파일만 있다면 언제든 해당 프로젝트에 필요한 패키지를 설치할 수 있다.

yarn 명령어를 이용하여 해당 파일에 정의된 모든 패키지를 node_modules 폴더에 설치할 수 있다.

yarn add: 해당 명령어로 yarn 패키지 매니저를 이용하여 패키지를 설치할 수 있으며 설치된 패키지 정보는 package.json 파일에 자동 추가된다.