영벨롭 개발 일지

[Node.js] NPM 이란? 본문

Back-end/Node.js

[Node.js] NPM 이란?

영벨롭 2022. 4. 29. 18:13

[ NPM 이란? ]

 

 NPM(Node Package Manager)은 전 세계의 개발자들이 만든 다양한 기능(패키지, 모듈)들을 관리하는 거대한 생태계라고 할 수 있습니다. 

 

 전 세계의 수 많은 JavaScript 프로그래머들이 유용한 자바스크립트 기능(패키지, 모듈)들을 이미 만들어 두었고,

이 코드들이 npm에 공개되어 있는 것입니다. 

 

 우리는 이 npm에 공개되어 있는 코드들을 가져오기만 하면, 복잡하고 고도화된 기능을 손쉽게 사용할 수 있습니다. 

 

 

 

장점 단점
- 관리 효율 증가
- 손쉬운 기능 고도화
- 학습 난도 증가
- 구성이 복잡

 

 

 

[ package.json ]

 

 프로젝트를 진행하다보면 수많은 패키지들을 추가하게 됩니다.

 

 이러한 패키지들은 저마다의 고유한 버전이 있는데, 이것들을 기록하고 관리해주는 파일이 바로 package.json 입니다. 

 

 때문에 기본적으로 프로젝트 내에서 npm을 사용하려면 프로젝트 내에 package.json 파일이 존재해야 합니다. 

 

 package.json 파일을 생성하기 위해선 다음 명령어를 터미널에 입력합니다. 

 

 이것은 npm으로 패키지를 관리하겠다라는 의미이기도 합니다. 

 

$ npm init

 

 

 

 

 package.json 파일 내부로 가서 구성을 보시면 다음과 같습니다. 

 

 

옵션 설명
name 프로젝트 이름
version 프로젝트의 버전
description 프로젝트에 대한 간단하 설명
main 프로그램의 시작점이 되는 모듈의 ID
(우리도 npm 생태계에 올릴 수 있게 하는 옵션)
scripts 현재 프로젝트 내부에서 사용할 수 있는 스크립트 명령들
( "명령이름": "명령~"
-> 터미널 $ npm run 명령이름 )
author 소유주
license 다른 사용자들이 이 패키지를 사용할 때 필요한 권한

 

 

 

 

[ 패키지 설치 ]

 

$ npm install <패키지 이름>

 

 위 명령어를 터미널에 입력하면 해당 패키지가 우리의 프로젝트에 설치됩니다. 

 

 이때, package-lock.json 파일 node_modules 폴더도 함께 생성됩니다. 

 

 package.json 파일에는 devDependencies 또는 dependencies 옵션이 생기고, 그 안에는 현재 프로젝트에서 사용할 패키지의 이름과 그 버전이 명시되어 있습니다. 

 

 

 

 package-lock.json 파일에는 설치한 패키지 내부에서 사용되는 다른 패키지들의 정보가 들어있습니다. 

 

 lock이라는 이름에서도 유추할 수 있듯이, package-lock.json은 자동으로 관리되는 반면 package.json는 직접적으로 관리할 수 있습니다. 

 

 

 node_modules 폴더 안에는 설치한 패키지 폴더 이외에도 해당 패키지가 만들어지고 활용될 때 필요한 다른 패키지들의 폴더가 함께 포함되어 있습니다.

 

 

 

 

 

 

[ node_modules 폴더가 삭제되면? ]

 

 node_modules 폴더가 삭제되더라도, package.json 파일에 devDependencies 또는 dependencies 옵션에 명시되어 있는 패키지 정보를 보고 node_modules를 다시 설치할 수 있습니다. 

 

 명령어는 다음과 같습니다. 

 

$ npm install

또는 

$ npm i

 

 

 

 

 

[ 의존성에 따른 패키지 설치 ]

 

  • 개발용 의존성 패키지 설치

 -D 또는 --save-dev 플래그와 함께 패키지를 설치하게 되면, 개발용 의존성 패키지가 설치됩니다. 

 

 개발 과정에서만 필요하고 웹 브라우저에서 동작할 때는 필요하지 않은 패키지를 설치할 때 이 옵션을 사용합니다. 

 

 이 패키지들은 package.json 파일의 devDependecies 옵션에 명시되어 있습니다. 

 

$ npm install <패키지 이름> -D

또는

$ npm install <패키지 이름> --save-dev

 

 

  • 일반 의존성 패키지 설치

 일반 의존성 패키지는 앞서 보았던 설치 방법입니다. 

 

 개발 과정뿐만 아니라, 웹 브라우저에서 동작할 수 있는 패키지를 설치합니다. 

 

 이 패키지들은 package.json 파일의 dependecies 옵션에 명시되어 있습니다. 

 

$ npm install <패키지 이름>

 

 

 

 

 

 

[ 기타 npm 명령어 ]

 

  • 패키지 정보 보기
$ npm info <패키지 이름>

 

 

  • 패키지 버전 덮어씌우기
$ npm install <패키지이름>@<버전>

 

 

 

  • 패키지 버전 업데이트 
$ npm update <패키지 이름>

 

 

 

 

 

[ 유의적 버전 Semantic Versioning, SemVer ]

 

^Major.Minor.Patch
(ex 12.14.1)
Major 버전 기존 버전과 호환되지 않는 새로운 버전
Minor 버전 기존 버전과 호환되는 새로운 기능이 추가된 버전
Patch 버전 기존 버전과 호환되는 버그 및 오타 등(단순한 기능)이 수정된 버전
^ 기호 (optional) Major 버전은 동일하지만 Minor, Patch 버전이 가장 최신 버전으로 업데이트

 

 

 

반응형

'Back-end > Node.js' 카테고리의 다른 글

[Node.js]Node.js 시작하기 : node.js & nvm 설치  (0) 2022.04.28