티스토리 뷰

npm(Node Package Manager) ?


node.js에서 빠질 수 없는게 npm인데
사실 저 같은경우는 bower 및 grunt를 사용하기 위해 npm을 그러면서 자연스럽게 node.js를 접하게 되었다.

node.js가 빠른 발전을 할 수 있었던 것도 이 npm덕분이라 생각하는데
npm은 위에 설명한 것 처럼 Node Package Manager의 약자로 node.js에서 사용하는 모듈들을 패키지로 만들어 npm을 통하여 관리하고 배포하고 있다.

이게 무엇을 의미하냐면 다른 사람이 잘 만들어놓은 모듈들을 npm을 통하여 설치하여 사용이 가능하다는 점이다.
또한 이 모듈이 사용하고있는 다른 모듈의 의존성또한 자동으로 해결해준다.
어떻게? npm install 이 명령어 한번으로 말이다.

다른언어에서 비슷한 개념으로

- ruby의 Gem
- php의 Composer
- C#의 NuGet
- java의 Jpm
- python의 pip

등 있으며 대부분 이러한 패키지 매니저가 의존성도 다 해결해주고 있다.

1. 설치

과거에는 npm을 별도로 설치해야한다고 했지만(제가 node.js를 접하였을땐 이미 아니였습니다.)
지금은 node.js만 설치하면 자동으로 설치가 됩니다.

node.js 사이트에서 node.js installer를 다운로드 합니다.

node.js 다운로드 페이지 : http://www.nodejs.org


페이지에 보면 LTS 와 Stable 버전이 있는데 차이는 아래와 같습니다.

[LTS(Long Term Supported) 버전]
짝수 버전이 LTS 버전(현재 4.X)
안정성과 보안성에 초점을 두어 개발

[Stable 버전]
Stable 버전은 잦은 업데이트를 진행
홀수 버전(현재 6.X)

프론트엔드 개발쪽은 Stable 버전 추천
서버로 사용할려면 LTS를 사용

설치프로그램은 실행 후에는 모두 Next 클릭하여 끝냅시다.(환경변수같은건 알아서 설정됩니다.)

환경 변수 하면 또 빠질 수 없는게 저도 윈도우 PC 사용자이지만 node.js 로컬 환경으로 개발 / 디버깅시 
잡다한 문제가 많이 발생됩니다. 이래서 node.js개발자들은 전부 맥을 사용하나봅니다 터미널 명령어의 일관성도 있고^^;;


2. npm의 기본 명령어

node.js 설치가 완료되면 
윈도우에서 window key + R 누른 후 cmd를 입력하여 console창을 띄웁니다.
mac에서는 터미널을 열어 주시면됩니다.



npm -v를 입력하시면 위와 같이 npm의 버전이 나옵니다.

우리는 npm을 이용하여 다음 포스트의 주제인 bower를 설치할 예정입니다.


npm을 이용하여 패키지를 설치하고자 할때는 npm install이라는 명령어를 입력합니다


npm install <패키지명>


우리는 bower 패키지를 설치할 것이기 때문에


npm install bower 라고 입력해야겠지만 여기서 더 -g 까지 추가로 붙입니다.

여기서 -g는 global의 약자로 전역 설치를 하겠다는 뜻입니다.

bower는 특정 디렉토리 안에서만 쓰이는 모듈이 아니라 전역으로 설치하여 명령어를 이용하기때문에

(npm도 bower와 동일하게 node.js 설치시 npm이 전역으로 설치 되어있습니다)

전역 설치를 하는 것입니다.

npm install bower -g






명령어를 입력하고나면 위와 같이 console이 찍히며 설치가 완료됩니다.

설치가 명령 한줄로 간단하게 패키지가 설치되었습니다.


지금까지는 npm을 이용하여 기존에있던 패키지를 설치하는 방법을 알아 보았으며 그럼 패키지 관리는 어떻게 하느냐?!

npm에서는 패키지 관리는 package.json이라는 파일로 관리합니다.


package.json을 가장 쉽게 생성하는 방법은 npm 명령어를 통해 생성하는 방법입니다.

npm init



위와 같이 명령어 실행 시 문답 형식으로 package.json 생성을 도와줍니다 처음에는 name을 입력하라고합니다.

name은 패키지 명칭으로 좀전에 설치했던 bower 같은 명칭과 동일합니다. 저는 npm-init-test로 사용하겠습니다. 이 이름은 중복이 되면

npm으로 업로드는 불가능합니다.




name을 입력하고나면 버전을 입력하라고 물어봅니다. 

저는 베타 이전을 0.0.* 버전으로 지칭하는걸 좋아합니다.

물론 semantic version(http://semver.org/lang/ko/)을 따르는게 가장 중요하고요. 그래서 0.0.1 입력



중간 내용을 생략했는데(쓰다보니 이미지가 너무 많이 삽입되서...)

테스트 실행 커맨드를 물어보고 git 저장소를 물어보고 키워드(npm 검색시 검색 키워드)

저자(개발자)이름도 물어보고 마지막으로 라이센스 표기도 물어봅니다.


해당 내용들을 모두 입력하고 나면 아래와 같이 표기되고 마지막으로 엔터를 입력하면 package.json이 생성됩니다.




이 파일은 확장자를 보시면 .json 파일이며 위와 같은 구조로 이루어져있습니다.

해당 글 포스트를 작성하면서 느낀건데 사실 이 포스트는 npm에 대한 간략한 설명만 할려고 했으나 서두없이 작성하다보니

npm의 기본적인 명령어들은 설명해야겠다 싶어서 npm init까지 하고나니 

package.json의 각 항목들을 또 설명해야되나 싶었으나

package.json에 대한 자세한 설명은 추후 다시 작성하여 링크 걸도록 하겠습니다.


3.결론

급 갑자기 결론으로 왔는데 사실 npm을 한 포스트로 설명하는게 말이 안될 정도로 npm은 광범위합니다.

npm은 실제 node.js로 서버사이드 프로그래밍을 하는 사람이 아니여도 프론트엔드쪽으로만 개발하시는 분들에게 유용한 도구입니다.

실제로 webpack같은 모듈이 그러하고요.


다음 포스트는 npm에 프론트엔드 버전이라고 할 수 있는 bower에 대해 작성하겠습니다.

댓글