티스토리 뷰
앞서 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을 통해 보다 손쉽게 접근할 수 있다.
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을 활용 방법을 익히고 적용해야 할 것이다."
'⑤ 개발, 데이터베이스 > ⓝ NodeJS' 카테고리의 다른 글
[Node.JS] 도커라이징 (0) | 2020.07.19 |
---|---|
[Node.JS] Database 연동 (1) | 2020.07.18 |
[Node.JS] Sample Application (Hello World) (1) | 2020.07.14 |
[Node.JS] Application (app.js & package.json) (0) | 2020.07.13 |
[Node.JS] 기동 및 모니터링 (0) | 2020.07.13 |
- Total
- Today
- Yesterday
- kubernetes
- wildfly
- git
- TA
- node.js
- 마이크로서비스 아키텍처
- MSA
- aa
- Docker
- aws
- JEUS6
- 오픈스택
- 마이크로서비스
- openstack token issue
- webtob
- Architecture
- 아키텍처
- nodejs
- 쿠버네티스
- JEUS7
- SA
- k8s
- Da
- API Gateway
- SWA
- openstack tenant
- apache
- JBoss
- jeus
- OpenStack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |