node 내부에는 기본적인 프로그램을 할 수 있는 기능들이 있습니다.

최초 설치시 기본적인 모듈들도 같이 설치가 되지만 좀더 풍부한 기능을 사용 하려면

외부에 있는 모듈을 추가로 설치 해야 합니다.


사용되는 모듈이 많아지면 하나씩 수작업으로 관리하기가 어려워집니다.

만약에 버전도 관리를 해야 한다면 상당히 귀찮아 질 수 있는데

node.js에는 이런 걱정을 덜 수 있는 npm(Node Package Manager)이라는 툴이 있습니다.


npmpackage.json라는 파일을 이용하여 프로젝트에 필요한 모듈들을 관리 합니다.

java에서 maven으로 프로젝트를 관리할 때 pom.xml 파일을 작성하는 것과 비슷합니다.


nodejs npm


npm을 사용하는 명령어 몇개를 보면


- 모듈 설치 방법


>npm install [패키지명]

>npm install [패키지명]@[버전]

>npm install [패키지명]@”<2.1”   -- 버전이 2.1 보다 작은 것

 

- 모듈 제거 방법


>npm uninstall [패키지명]

 

- 모듈 업데이트 방법


>npm update [패키지명]


 

이런식으로 작업을 합니다.

만약 프로젝트에 설치할 모듈이 많아지면 수작업으로 하기는 어렵겠죠?

그래서 package.json 이라는 파일을 이용해 관리를 하면 편리 합니다.


{
  "name": "Test",
	"version": "0.0.1",
	"dependencies": {
	   “express” : “4.16.4”
	   “jade” : “*”
	}
}

이렇게 package.json 파일의 dependencies 내부에 필요한 모듈을 작성한 후


>npm install


>npm update


하기만 하면 명시된 모듈들이 모두 인스톨 되거나 업데이트가 됩니다.

 

간단하게 테스트를 해보겠습니다.

물론 위에서 처럼 수작업을 하지는 않고 eclipse에서 작업을 합니다.


파일을 하나 만들고 실행을 해봅니다.




var express = require('express');

 

express 라는 모듈이 최초 node 설치파일에 포함되지 않아 오류가 발생하는군요.

 

npm을 초기화 해보도록 하겠습니다.



프로젝트(Test)에서 마우스 우측 버튼을 클릭 > New > Other…



npm Init



[Next] 버튼을 누릅니다.



[Finish]버튼을 누릅니다.

 

그러면 좌측에 못보던  package.json 이라는 파일이 생겼네요.



프로젝트에 대한 전반적인 환경을 포함하고 있는 파일입니다.


이제 설치할 모듈을 추가할 수 있게 되었습니다.


package.json 파일에 express와 버전을 기입 합니다.


"dependencies": {

    "express": "4.16.3"

}




npm을 이용하여 패키지를 추가해 줍니다.



 

디렉토리에는 어떤 변화가 있을까요?

 

npm Install을 하기 전 모습



npm Install을 실행 후 모습



node_modules 디렉토리가 새로 생성 되었습니다.

 

node_modules 디렉토리 구조를 볼까요?



너무 많아 일부만 담았습니다.

 

node_modules 하위에 무척 많은 디렉토리가 생성이 되었습니다.

 

express 4.x 버전부터 변화가 생겼습니다.

 

4.x 버전 이전의 node_modules 하위 디렉토리 구조는

 



이렇게 몇 개 되지 않았는데 좀더 많은 기능들이 추가 되었습니다.


이제 프로그램을 실행 합니다.



잘 실행이 되고 있군요.


서버가 기동하고 Client의 접속을 기다리고 있습니다.


웹브라우저를 하나 열어 접속을 시도해 봅니다.


http://localhost:8181/



성공입니다.



이것도 동일한 결과죠.


 


몇줄 되지 않지만 웹서버의 역할을 하고 있습니다.

서버는 계속 대기상태에 있습니다.


만일 동일한 포트를 사용하거나 수정을 하고 다시 테스트를 하는 경우에는

기존 웹서버를 내리고(프로세스 종료) 테스트 합니다.



기존 서버가 살아있으면 포트를 사용할 수 없어 오류가 발생 합니다.


- copy coding -


+ Recent posts