본문 바로가기
개발

[Node.js] 5장

by jwcs 2024. 2. 7.
728x90

5.1 npm 알아보기

  npm은 Node Package Manager의 약자로, 말 그대로 노드 패키지 매니저이다. 개발자들이 자신의 프로젝트에 필요한 자양한 자바스크립트 라이브러리와 도구들을 쉽게 설치하고 관리할 수 있도록 돕는다.

 npm을 사용하려면 Node.js를 설치해야 한다. Node.js를 설치하면 npm도 자동으로 설치된다. npm을 통해 패키지를 설치하면, 해당 패키지의 코드와 그 패키지가 의존하는 다른 패키지들도 함께 설치된다. 이는 프로젝트의 `package.json` 파일에 기록되어, 프로젝트의 의존성을 관리하는 데 도움을 준다.

 npm을 사용하여 패키지를 설치, 업데이트, 제거할 수 있으며, 패키지의 버전 관리와 프로젝트의 의존성 관리 등을 손쉽게 할 수 있다.

 

5.2 package.json으로 패키지 관리하기

 package.json 파일은 Node.js 프로젝트의 루트 디렉토리에 위치하며, 프로젝트의 메타데이터와 의존성을 관리하는 데 사용된다. 이 파일을 통해 프로젝트에 필요한 패키지(라이브러리)의 버전을 지정하고, 프로젝트 설정과 스크립트를 정의할 수 있다.

 

package.json 사용하기

  • 1. package.json 파일 생성하기:
     프로젝트 디렉토리에서 `npm init` 명령어를 실행하면, 몇 가지 질문에 답하면서 `package.json` 파일을 생성할 수 있다. 자동으로 기본값을 채워넣고 싶다면 `npm init -y`를 사용할 수 있다.
  • 2. 패키지 설치 및 package.json에 추가하기:
     패키지를 설치하고자 할 때는 `npm install <패키지명>` 명령어를 사용한다. 이 명령어는 패키지를 `package.json`의 `dependencies` 섹션에 해당 패키지를 추가한다. 개발 시에만 필요한 패키지(예: 테스트 라이브러리)는 `npm install <패키지명> --save-dev` 명령어를 사용하여 `devDependencies`에 추가할 수 있다.
  • 3. 의존성 관리:
     `package.json`의 `dependencies`와 `devDependencies` 섹션에 프로젝트가 의존하는 패키지들의 목록이 저장된다. 각 패키지 옆에는 설치된 버전에 대한 정보가 포함되어 있다. 버전 관리 규칙(semver)을 사용하여 특정 버전 또는 범위를 지정할 수 있다.
  • 4. 스크립트 정의:
     `package.json`의 `scripts` 섹션을 통해 자주 사용하는 명령어를 스크립트로 정의할 수 있다. 예를 들어, `start`, `test`, `build`와 같은 스크립트를 정의하고 `npm run <스크립트명>`으로 실행할 수 있다.
  • 5. 프로젝트 공유 및 재설치:
     프로젝트를 다른 사람과 공유하거나 다른 환경에서 프로젝트를 설정할 때, `package.json` 파일과 `package.lock.json` 파일(자동 생성됨)만 있으면 된다. `npm install` 명령어를 실행하면, 이 파일들에 명시된 의존성들이 자동으로 설치된다.
  • 6. 버전 관리 및 업데이트:
     `npm update` 명령어를 사용하여 `package.json`에 명시된 의존성들을 최신 버전으로 업데이트할 수 있다. 패키지의 특정 버전을 지정하려면, `package.json` 파일을 직접 수정 후 `npm install`을 실행한다.

`npx`란?

 npx는 node.js를 설치할 때 함께 설치되는 패키지 실행 도구이다. `npm`과 비슷해보이지만, `npx`는 설치된 패키지를 실행하거나, 설치하지 않고 일회성으로 패키지를 실행할 수 있는 기능을 제공한다. 이를 통해 디스크 공간을 절약하고, 버전 관리하기가 용이하다.

 

5.3 패키지 버전 이해하기

 노드 패키지들의 버전은 항상 세 자리로 이루어져 있다. 노드의 버전도 세 자리이다. 이 이유는 SemVer 방식의 버전 넘버링을 따르기 때문이다.

 

SemVer(시맨틱 버저닝)이란?

 SemVer는 소프트웨어 버전을 명확하고 의미 있게 관리하기 위한 규칙 시스템이다. 주요 버전(major), 부 버전(Minor), 패치 버전(Patch)의 세 부분으로 구성된다. 주 버전은 호환되지 않는 API 변경이 있을 때 증가한다. 부 버전은 이전 버전과 호환되면서 새로운 기능이 추가될 때 증가한다. 패치 버전은 이전 버전과 호환되는 버그 수정이 있을 때 증가한다.

 예시를 들어보겠다. 버전 번호는 `주.부.패치` 형식으로 표시된다. `1.0.0`에서 `1.0.1`은 패치가 적용되었음을, `1.1.0`은 새 기능이 추가되었음을, `2.0.0`은 호환되지 않는 API 변경이 있었음을 의미한다.

 

npm 및 npx 사용 시 SemVer 관련 정보

 `npm`에서 패키지를 설치할 때 `~`와 `^` 기호를 사용하여 SemVer 호환 버전을 지정할 수 있다.

  • `~`는 가장 마지막 패치 버전까지만 업데이트를 허용한다(예: `~1.0.0`은 `1.0.1`까지 허용).
  • `^`는 마지막 패치 버전까지만 업데이트를 허용한다(예: `^1.0.0`은 `1.1.0`까지 허용하지만 `2.0.0`은 허용하지 않음).
  • `npx`를 사용할 때, `npx <패키지명>@<버전>` 형식으로 특정 버전을 실행할 수 있다.
  • `latest` 태그를 사용하여 가장 최신 버전의 패키지를 설치하거나 실행할 수 있다.

5.4 기타 npm 명령어

 `npm` 명령어에 대해 알아보겠다.

  • npm outdated: 프로젝트에 설치된 패키지 중에서 업데이트 가능한 버전이 있는지 확인한다. 출력된 표에는 `Package` 이름과 현재 설치된 버전(`Current`), 설치되어야 할 버전(`Wanted`), 그리고 가능한 최신 버전(`Latest`)이 표시된다. 예시로, `nodemon` 패키지는 현재 `1.19.4` 버전이 설치되어 있으나, 원하는(`Wanted`) 버전은 `1.19.4` 이며, 사용 가능한 최신 버전(`Latest`)은 `2.0.1`이다.
  • npm install <패키지명>: 지정된 패키지를 설치한다.
  • npm update <패키지명>: 특정 패키지를 제거할 수 있다.
  • npm search [검색어]: npm 레지스트리에서 패키지를 검색할 수 있다. 검색 결과는 이름, 설명, 저자, 날짜 등의 정보를 포함한다.
  • npm info <패키지명>: 패키지에 대한 상세 정보를 조회한다.
  • npm login/logout: npm 레지스트리에 로그인하거나 로그아웃한다.
  • npm whoami: 현재 로그인한 npm 사용자 이름을 확인한다.
  • npm version [major | minor | patch]: package.json의 버전을 업데이트한다.
  • npm deprecate <패키지명>@<버전> [메시지]: 특정 버전의 패키지를 사용하지 말 것을 권고한다.
  • npm publish/unpublish: 패키지를 npm 레지스트리에 배포하거나 배포 취소를 한다.

 

728x90
반응형

'개발' 카테고리의 다른 글

[Node.js] 1~6장 복습  (0) 2024.02.15
[Node.js] 6장  (0) 2024.02.08
[Node.js] 4장  (0) 2024.02.04
[Node.js] 3장  (0) 2024.02.04
[Node.js] 2장  (0) 2024.02.02