이전글
[Node.js] Node 작성한 모듈을 외부 모듈로 만드는 방법, exports 사용법
외부 모듈 사용하는 방법
Node.js 는 내가 만들 모듈뿐만 아니라 다른 사람이 작성해 놓은 외부 모듈을 npm을 통해 사용할 수 있습니다.
NPM(Node Package Manager)
npm은 node의 모듈을 관리해주는 패키지 매니저입니다.
패키지란 관리를 위해 모듈에 몇 가지 정보를 추가한 것으로 결국 모듈이지만 조금 더 큰 단위라고 볼 수 있습니다.
이러한 패키지들은 공유를 위해 인터넷에 올리기도 하는데 이 또한 npm을 통해 내려받아 설치가 가능합니다.
많이 사용하는 JAVA 플랫폼의 MAVEN과 비슷한 개념이라고 생각하면 됩니다.
npm으로 외부 모듈 패키지 설치하기
nodeJS 프로젝트에서 필요한 외부모듈을 npm으로 설치해 보겠습니다.
1. 윈도우 명령프롬프트(cmd)를 열고 nodeJS 프로젝트가 있는 경로로 이동합니다.
2.프로젝트 경로로 이동했으면 npm install 명령으로 외부 모듈 패키지를 설치합니다. 예를들어 날짜관련 모듈인 moment를 설치하는 경우 npm install moment 와 같이 입력합니다.
npm install [모듈이름]
만약 모듈이 필요 없어져서 삭제하는경우 npm uninstall 명령으로 삭제할 수 있습니다.
npm uninstall [모듈이름]
3. npm으로 패키지 설치가 완료된 경우 [프로젝트경로]\[node_modules]\[패키지명]으로 모듈 패키지가 설치됩니다. 방금 설치한 moment의 경우에는 다음과 같은 로 하위에 모듈이 설치됩니다.
C:\nodejs\myNodeProject\node_modules\moment
node_modules 디렉터리가 없는 경우 외부 패키지를 다운로드 하면서 자동으로 생성됩니다.
프로젝트 npm inatall로 외부 모듈 설치시 문제점
지금처럼 프로젝트 경로에서 npm install을 이용하여 패키지를 설치하는 경우 해당 프로젝트 이에외는 사용할 수 없다는 문제점이 있습니다. 만약 여러 프로젝트에서 동일한 외부 모듈을 사용하는 경우 각각의 프로젝트마다 npm install을 해주어야 하는 번거로움이 생기게 됩니다.
이러한 문제를 해결하기 위한 방법으로는 외부모듈이 설치되는 node_modules 디렉터리를 프로젝트들의 상위 디렉터리로 옮기는 방법이 있습니다.
node.js는 프로젝트가 실행될 때 필요한 모듈이 현재 프로젝트의 node_modules 디렉터리에 존재하는지 확인 후 없으면 상위 디렉터리의 node_modules 안에 디렉터리가 있는지 검사하기 때문입니다. 만약 상위에도 존재하지 않는 경우 더 상위 디렉터리의 node_modules을 검사하는식으로 동작합니다.
package.json으로 패키지 관리하기
프로젝트에서 사용하는 외부 모듈이 많아지게 되면 관리하기가 번거로워지도 새로운 프로젝트를 진행하는 경우에 필요한 모듈이 많은 경우 패키지 수만큼 npm 명령을 사용해야하는 번거로움이 생깁니다.
이러한 경우 필요한 패키지들의 목록을 파일로 정리해놓고 목록 파일을 이용하여 단 한번의 명령어로 필요한 패키지들을 모두 설치할 수 있습니다. 이러한 패키지 정의 파일을 package.json 파일이라고 합니다. package.json 파일을 만드는 방법을 알아보겠습니다.
1. 먼저 명령프롬프트를 열고 외부 모듈들이 설치되어 있는 프로젝트 경로로 이동합니다.
cd C:\nodejs\myNodeProject
2. myNodeProject에는 moment라는 날짜 관련 외부 모듈이 설치되어 있는 상태라고 가정하겠습니다. npm init 명령을 통해 package.json 파일을 생성합니다.
npm init
npm init 명령을 프로젝트 경로에서 실행하면 여러가지 정보를 입력하게 되어있습니다. 현재 프로젝트명이나 프로젝트의 시작 파일, 설명, 버전 정보 사용하는 라이브러리의 버전정보 등 입니다.
3. npm init 명령어를 실행하면 처음에 name을 입력하게 되는데 node를 입력해 줍니다.
4. 이후 기타 정보들을 입력하게 되는데 필요없는 경우 Enter를 눌러 그냥 넘어갑니다.
입력을 끝마치고 나면 package.json 파일이 생성됩니다.
5. package.json 파일을 열어보면 아까 init 명령어를 실행한 이후 입력했던 정보들이 json 형태로 입력되어 있음을 알 수 있습니다.
여기서 중요한 것은 dependencies 부분입니다. 이 부분을 보면 프로젝트에서 설치한 외부 모듈인 moment가 들어가 있습니다.
dependencies 는 현재 프로젝트가 의존하고 있는 외부 모듈 목록이 정의되는 속성입니다.
만약 여러가지 외부 모듈을 설치한 경우 모든 외부 모듈들이 이곳에 입력됩니다.
{
"name": "node",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"moment": "^2.20.1"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
6. 만약 package.json 파일이 생성된 이후 외부 모듈을 다운로드 하는 경우 npm init 명령어에 --save 옵션을 주어 설치하면 자동으로 package.json 의 dependencies 목록에 추가됩니다.
npm install [외부모듈] --save
만약 nconf라는 모듈을 다운로드하면서 package.json에 정보를 추가하고 싶은 경우 다음과 같이 입력합니다.
npm install nconf --save
이후 package.json 파일의 dependencies는 다음과 같이 수정되어져 있습니다.
"dependencies": {
"moment": "^2.20.1",
"nconf": "^0.10.0" //목록 추가
},
7. package.json에 직접 dependencies 목록을 추가하여 외부모듈을 설치할 수 있습니다.
만약 nconf 모듈을 직접 package.json 에 추가했다면 npm update 명령만 입력해주면 package.json 파일을 검사하여 추가된 모듈을 다운받습니다.
package.json으로 외부 모듈 한번에 다운로드 하기
package.json 파일만 있다면 단 한번의 명령으로 정의된 모듈을 한번에 다운로드 할 수 있습니다.
1. 프로젝트 디렉터리를 새로 생성한 후 미리 정의해 놓은 package.json 파일을 복사해 둡니다.
2. 명령 프롬프트를 이용해 새로운 프로젝트 경로로 이동합니다.
cd C:\nodejs\myNewNodeProject
3. npm install 명령을 실행합니다. npm install 명령을 실행하는 경우 자동으로 package.json을 읽어들여 정의된 외부 모듈들을 모두 다운로드합니다.
npm install