티스토리 뷰

728x90
반응형

앞서 package.json을 통해 node module이 관리되어진다는 것은 이미 확인하였다. 그렇다면, package.json으로 관리되는 node module은 어떠한 방식으로 dependency를 관리하고 module을 설치하는지 살펴보도록 하자.

 NPM 

NPM은 Node Package Manager로써 다음과 같은 기능을 담당한다.

  • NodeJS로 만들어진 모듈을 웹에서 다운로드 받아 설치하고 관리하는 기능

  • NodeJS 모듈의 버전을 관리하고 호환성을 관리하는 기능

즉 NodeJS Module을 설치하고, 관리하고, Dependency를 유지해 주는 말 그대로의 관리 매니저라 할 수 있다.

 NPM 활용 

그렇다면 NPM은 어떻게 활용할 수 있는지 살펴보도록 하자.

1) npm version (npm version or npm --version)

2) npm upgrade (npm install -g npm)

npm version에서 확인한 6.14.5 → 6.14.6으로 upgrade 됨

3) npm init (npm init)

npm init은 package.json을 생성하는 명령어이다. 기존 사용하던 package.json이 있다면 이를 사용해도 무방하지만, package.json을 신규로 생성하여 관리하고자 할 경우 npm init으로 기본 template을 생성할 수 있다.

4) npm install (npm install)

위는 npm install 시 포함될 node module의 형태를 나타낸다.

package.json 파일이 위치하는 경로에서 npm install만 입력할 경우 package.json의 dependency에 정의된 라이브러리 모듈이 모두 설치된다.

npm install과 함께 많이 사용되는 몇가지 옵션에 대해 살펴보도록 하자.

  • -g : -g 옵션은 글로벌 패키지로 적용한다는 옵션이다. -g를 넣으면 해당 NodeJS 프로젝트 뿐 아니라 다른 프로젝트에서도 해당 패키지를 사용할 수 있다.

-g 옵션의 글로벌 환경 적용의 경우 실제 node module의 위치가 다음과 같이 적용된다.


D:\NodeJS\SampleAPP>npm install nodemon

> nodemon@2.0.4 postinstall D:\NodeJS\SampleAPP\node_modules\nodemon
> node bin/postinstall || exit 0

+ nodemon@2.0.4
added 118 packages from 54 contributors and audited 184 packages in 5.897s

8 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


D:\NodeJS\SampleAPP>npm uninstall nodemon
removed 118 packages and audited 65 packages in 1.192s
found 0 vulnerabilities


D:\NodeJS\SampleAPP>npm install -g nodemon
C:\Users\user\AppData\Roaming\npm\nodemon -> C:\Users\user\AppData\Roaming\npm\node_modules\nodemon\bin\nodemon.js

> nodemon@2.0.4 postinstall C:\Users\user\AppData\Roaming\npm\node_modules\nodemon
> node bin/postinstall || exit 0

+ nodemon@2.0.4
updated 2 packages in 2.171s

D:\NodeJS\SampleAPP>


위와 같이 -g 옵션이 없는 local 설치의 경우 해당 NodeJS Project 하위의 node_modules에 module이 설치가 되지만, -g 옵션을 추가하여 global 옵션을 적용할 경우 계정 하위 AppData에 node_module이 설치가 된다. 이로 인해 모든 프로젝트에서 공유해서 해당 모듈을 사용할 수 있도록 한다.

  • --save or -S : --save 옵션은 --save-prod와 같은 동작방식으로 package.json의 dependencies에 포함되며, 이는 배포 시점에 함께 publishing되는 node module이다.

  • --save-dev : --save-dev 옵션은 예상과 같이 devDependencies에 포함되며, 개발 시 함께 포함되어 사용되지만, 배포 시 publishing에 포함되지 않는 node module이다.

위 dev와 prod는 다음과 같이 각각 테스트를 진행해 볼 수 있다.


D:\NodeJS\SampleAPP>npm install --save-prod express

+ express@4.17.1
added 15 packages from 10 contributors, removed 1 package, updated 8 packages and audited 343 packages in 3.239s

11 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


D:\NodeJS\SampleAPP>npm install --save-dev http-errors

+ http-errors@1.6.3
updated 2 packages and audited 344 packages in 1.346s

11 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


D:\NodeJS\SampleAPP>


위와 같이 추가할 경우 package.json은 다음과 같은 형태로 구현된다.


{

  "name": "sampleapp",

  "version": "0.0.0",

  "private": true,

  "scripts": {

    "servestart": "pm2-dev start ./bin/www",

    "servestop": "pm2-dev stop ./bin/www",

    "start": "node ./bin/www"

  },

  "dependencies": {

    "cookie-parser": "~1.4.4",

    "debug": "~2.6.9",

    "ejs": "~2.6.1",

    "express": "^4.17.1",

    "morgan": "~1.9.1",

    "nodemon": "^2.0.4",

    "pm2": "^4.4.0"

  },

  "devDependencies": {

    "http-errors": "^1.6.3"

  }

}


위와 같이 dependencies를 개발, 배포 시점을 구분하여 적용할 수 있도록 관리할 수 있다.

5) npm update (npm update [node_module])

npm update는 npm module의 버전을 업데이트하는 명령어이다.

6) npm search (npm search [node_module])

npm search는 npm module의 정보를 찾는 명령어이다.

조회시 위와 같이 출력되는것으로 봐서 아마도 express 대소문자를 구분하지 않고 Field에 저장된 값에 일치하는 모든 정보를 표출하는 것으로 보인다.

대체로 root 모듈이 존재하고 그 하위의 sub 모듈이 존재하는데, express의 경우 하위로 자주 사용하는 express-fileupload, express-session 등이 search에 함께 표출될 수 있도록 express 단어를 포함하고 있으니, npm search 만으로도 손쉽게 활용 가능한 모듈을 검색해 볼 수 있다.

이는 인터넷이 가능한 환경이라면, 다음 URL을 통해 보다 손쉽게 접근할 수 있다.

https://npmsearch.com/

 

npmsearch - node.js Package Search Utility

 

npmsearch.com

Docker는 hub.docker.com, Python은 pypi.org, Maven은 mvnrepository.com이 있듯 npm module은 npmsearch.com에서 확인할 수 있다.

7) npm uninstall (npm uninstall [node_module])

마지막으로 설치한 node module을 삭제하는 방법이다.


D:\NodeJS\SampleAPP>npm uninstall express
removed 43 packages and audited 17 packages in 0.518s
found 0 vulnerabilities
D:\NodeJS\SampleAPP>


 

"npm은 수많은 node module을 관리하는 npm repository를 통해 dependency를 자동으로 관리해 주고, 복잡한 설치 방식을 간편화 하는 NodeJS의 핵심 기능이라 할 수 있다. npm을 통해 기 개발된 많은 라이브러리를 손쉽게 활용할 수 있도록 도와주기때문에 npm을 활용 방법을 익히고 적용해야 할 것이다."

728x90
반응형