nodejs에서 npm을 사용하여 여러가지 모듈을 쉽고 빠르게 설치할 수 있습니다. 이 때 npm을 사용하는데 아래에서 자세히 알아봅니다.
nodejs는 사용할 모듈을 직접 설치해야합니다. 모듈 설치를 할 경우 node 밖에 실행해야하므로 만약 node 안에 있다면 Ctrl-D 키를 눌러 빠져나오도록 합니다.(이는 process.exit()와 같다) 이제 node shell에서 빠져나왔다면 다음 커맨드를 입력해 원하는 모듈을 npm을 통하여 설치할 수 있습니다. 그럼 npm이 무엇인지 간단하게 알아보겠습니다.



# npm 이란 무엇인가?
먼저 npm은 Node Package Manager로 nodejs에 필요한 모듈을 설치하고 관리하는 패키지 매니저입니다. 이 npm을 사용하여 nodejs를 위해 필요한 모듈을 이곳에서 다운받아 설치할 수 있죠. 그럼 간단한 npm 사용방법을 알아보겠습니다.

! nodejs및 npm 설치하기
npm을 사용하여 node 모듈을 설치하려면 먼저 nodejs와 npm의 설치가 필요합니다. 이를 설치하는 방법은 아래와 같은데 우선 apt-get을 최신으로 유지하고 nodejs를 설치해보겠습니다. apt-get을 업데이트 해야 관련된 모듈, 프로그램을 설치할 수 있습니다.
apt-get update

이제 nodejs 설치해보겠습니다. 만약 최신 버전 인스톨하려면 아래의 최신 버전 설치로 이동하세요.
apt-get install nodejs

이제 npm(node package management)을 설치합니다.
apt-get install npm

npm init


! node & npm 최신 버전 설치
최신 버전의 경우 nodejs, npm의 최신 버전의 설치는 아래의 방법이 필요합니다.
sudo apt-get install curl python-software-properties
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -

npm 설치 후 npm init을 사용하면 몇가지 입력을 거치게됩니다. 설치하는 application과 관련된 정보들로 이를 입력하면 내용이 package.json에 입력되며 파일이 생성됩니다. (npm init에서 입력하다보면 entry file이 나오는데 모듈을 필요로할때 실행하는 script 파일로 index.js 또는 app.js로 일반적으로 사용됨)이 파일은 npm 기본 정보를 저장, 관리할 수 있습니다. 이제 모든 준비가 완료되었으며 아래에서 새로운 모듈을 설치하는 방법을 알아보세요.


! npm install의 옵션 설정 알아보기
npm을 사용하여 모듈을 설치할때 다음과 같은 옵션값(Flag)를 설정할 수 있습니다. 각각의 옵션값과 기능은 아래와 같습니다.

  • -S 또는 --save  //  패키지의 Dependencies에 추가됨
  • -D 또는 --save-dev //  패키지의 devDependencies에 추가됨
  • -O 또는 --save-optional //  패키지의 optionalDependencies에 추가됨

여기서 Dependencies라는 용어를 보게되는데 이는 설치된 모듈을 의미하며 어떤 어플리케이션을 실행하기 위해서 필요하다는 의미로 디펜던시(Dependencies)라고 부르게됩니다.
이때 디펜던시는 세 가지로 나뉘어집니다. 어떤 어떤 디펜던시로 추가할 것인지 결정할 수 있습니다.예를들어 -D를 사용하는 경우 개발 환경에서만 필요한 module인 경우 -D 플래그를 사용하게 됩니다. 개발환경에만 필요한 webpack처럼 번들 파일을 생성하거나 linting 등을 수행하는 유틸 기능들의 모듈이 여기에 해당할 수 있습니다.


! npm을 사용한 모듈 설치 예제그렇다면 npm을 사용하여 설치 방법을 알아봅니다. 예를들어... 만약 필요한 모듈이 figlet인 경우 아래와 같이 수행하도록 합니다.
npm install figlet

위 커맨드를 실행하면 npm이 설치된 디렉토리 안에 figlet 라이브러리가 담긴 디렉토리가 생성되며 이 후 해당 모듈의 사용이 가능하게됩니다. 설치된 모듈은 package.json이라는 폴더에서 관리되며 npm에 어떤 것을 사용중인 확인할 수 있습니다. 파일 내부에 dependencies: {} 안에 위치합니다.
{
  "dependencies": {
    "cors": "~2.0.0",
    "ejs": "^2.0.0"
  }
}

위 package.json의 dependencies를 보면 설치된 모듈의 버전이 표시되어 있습니다. .을 기준으로 세 개의 숫자로 구분되는데 앞에 보면 ^(caret)과 ~(tilde)가 사용되어 있죠. 각각의 의미는 다음과 같습니다.


! package.json 파일 내부의 ~ 또는 ^ 의미 알아보기
각각 caret과 tilde는 다음과 같이 수행하게 됩니다.

^2.0.0
2.0.0 부터 마이너의 최신 버전까지의 범위로 설치합니다.
Ex) 2.0.5

~2.0.0
2.0.0 부터 마이너 또는 패치의 최신 버전까지의 범위로 설치합니다.
Ex) 2.1.0


! npm을 사용한 모듈 설치시 -g 옵션을 사용하는 이유
모듈을 설치시 -g 옵션을 사용하는 경우사용하지 않는 경우로 구분할 수 있습니다. -g 옵션을 사용하지 않으면 해당 모듈은 현재의 경로를 기준으로 './node_modules/' 내부에 설치되게됩니다. 하지만 -g 옵션을 사용할 경우 전역 범위에서 사용할 수 있습니다. 또한 설치 범위 역시 {prefix}/lib/node_modules로 확대 및 사용할 수 있게됩니다.
 


# npm 모듈 언인스톨 삭제하는 방법, uninstall 만약 npm install을 사용하여 설치된 모듈을 삭제, 제거하기 위한 방법은 어떻게 될까요? 이 경우 uninstall을 사용하여 가능합니다. 만약 testModule이라는 모듈을 삭제하려면? 아래와 같이 수행합니다.
npm uninstall testModule

이제 package.json을 확인해보면 testModule이 제거된 것을 확인할 수 있습니다. 이처럼 npm uninstall은 install과 반대로 설치된 모듈을 제거, 언인스톨 해줍니다.



npm을 사용하는 이유는 간단한데 nodejs를 사용해 모듈을 사용해 수 많은 모듈이 설치되면 이를 관리 및 사용하기 어렵기 때문에 이를 관리할 패키지 매니저가 필요로 하고 이를 npm에서 수행하기 위한 목적입니다.


! 기타사항
만약 최신버전으로 npm 설치하려면 아래 링크를 참고하세요
https://webisfree.com/2018-08-07/npm-최신버전으로-업데이트-방법