카테고리 없음

Node.js 입문 1 - 9~10 (7~8은 설치)

8나지 2024. 5. 10. 17:48

**Module**

Node.js에서 코드의 재 사용성을 높이기 위해 작성된 독립적인 코드조각 

; 이러한 모듈을 npm이나 yarn같은 패키지 매니저를 통해 업로드 하여 다른 개발자들과 공유할 때 이를 패키지라고 함

패키지 매니저

더보기
  • **패키지 매니저(Package Manager)**는 패키지를 손쉽게 다루는 작업을 안전하고 편리하게 사용하기 위한 툴입니다. Node.js 패키지의 설치, 업데이트, 삭제 등을 할 수 있으며, 패키지간의 의존성을 관리해줍니다!
  • 다른 개발자들이 작성한 코드를 쉽게 다운로드 받거나, 혹은 저희가 작성한 코드를 배포하여 다른 사람들에게 제공할 수 있게 됩니다.
  • 패키지 매니저의 진정한 가치는, 여러 개발자들이 만든 수많은 패키지들을 효과적으로 활용하여, 자신의 프로젝트를 더 빠르고, 안정적으로 만들 수 있습니다.
    • 만약, 패키지 매니저가 없었다면, 각각의 패키지를 일일이 찾아서 코드를 복사하거나, .zip 파일 형식으로 다운로드 받아 직접 관리하는 번거로움이 있었겠죠? 🥲
  • Node.js에서 대표적으로 사용하는 패키지 매니저는 **npm**과 **yarn**이 존재합니다.

npm : node package manager

노드 사용하는데 필요한 패키지 설치해주는 프로그램 . 함께 설치됨 (live server, 프리티어 포함)

 

yarn : npm에서 부족한 부분을 보완함.

  • yarn은 패키지를 다운로드 하는 과정에서 해당하는 패키지의 보안 검사를 수행합니다. 패키지 내부에 위험한 스크립트가 다운로드 되거나, 종속성 문제가 발생하는 것을 방지할 수 있습니다.
  • yarn은 병렬 처리를 도입하여, 패키지 설치 속도가 npm보다 빠르다는 장점이 존재합니다. 즉, 패키지를 하나씩 설치하는 것이 아닌, 여러개를 동시에 설치할 수 있습니다.

package.json : node.js프로젝트의 가장 핵심적인 파일, 버전관리할 때 사용함

더보기
  • 동일한 패키지라도 버전에 따라 기능이 다르기 때문에 특정 버전을 설치하고 관리해야 할 때 필요합니다.
  • package.json파일에는 프로젝트명, 작성자, 라이센스 정보 등 일반적인 프로젝트의 메타 데이터 뿐만 아니라, 스크립트를 실행할 수 있는 필드 또한 포함되어 있습니다.
  • npmyarn 모두 동일한 package.json 파일을 참조

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)**하거나 복제했을 때, 동일한 의존성을 가지게 해줍니다.

 

yarn add [패키지 명] : yarn을 패키지로 설치할 때 사용하는 명령어

여러개 설치가능 : ex) yarn add express mongoose jest

; express, mongoose, jest 라는 3개 패키지 설치가능

설치 후 ls -la 입력해서 확인 가능 

설치후 깔린 패키지 클릭하면
"dependencies": {
"express": "^4.19.2"
}
요런게 생기는데 어떤 패키지들을(여기서는 express) 어떤 버전(4.19.2)으로 설치했는지에 대한 뜻
; yarn lock -> express 가면 버전이 같은 걸 볼 수 있음
 
yarn lock : 관리하고 있는 세부적 의존성들에 대한 관계 정의 

 

<넘길 때>

파일을 넘길 때에는 node_modules 안줘도 됨 (제거해야함..?)

git 에서도 node_modules 제외하고 올림

<받을 때>

내가 만약 노드 모듈스를 제거하고 파일을 보내면 받은 사람은 터미널에 yarn 입력시 yarn. lock 파일과 package.json파일을 기반으로 필요한 패키지 설치됨

dependencies ;

  • yarn add (패키지 명) 명령어를 통해 설치한 패키지들이 나열되는 곳 입니다.
  • **프로젝트 실행과 배포(Deploy)**시 필수적으로 필요한 패키지의 이름과 버전을 표시합니다.

devDependencies ; 

  • yarn add -D (패키지 명) 명령어를 통해 설치한 패키지들이 나열되는 곳 입니다.
  • 개발 또는 빌드(Build) 단계에서 필요한 패키지들을 설치할 경우 이곳에 포함됩니다.
  • → 여기서 빌드 단계는 테스트 코드 실행이나, TypeScript를 JavaScript로 변경하는 단계를 의미

결론

  • node_modules: 이 폴더는 공유하거나 배포할 때 포함되서는 안됩니다. → package.json 파일과 yarn.lock 파일을 이용하여 동일한 패키지 버전을 설치할 수 있다.
  • package.json: 해당 파일만 있다면 언제든지 해당 프로젝트에 필요한 패키지를 설치할 수 있습니다. yarn 명령어를 이용하여 해당 파일에 정의된 모든 패키지를 node_modules 폴더에 설치 할 수 있습니다.
  • yarn add: 해당 명령어는 yarn 패키지 매니저를 이용하여 패키지를 설치할 수 있습니다. 설치된 패키지 정보는 package.json 파일에 자동 추가됩니다.