본문으로 바로가기

NPM 이란 ?

 npm은 Node Packaged Manager의 약자입니다. 먼저 Node는 Node.js를 의미하고 Packaged라는 것은 package로 만들어진 것들을 의미합니다. package는 모듈이라고 따로도 불리는데 패키지나 모듈은 프로그램보다는 조금 작은 단위의 프로그래밍 도구 기능들을 의미합니다. 그리고 Manager는 잘 아시는 것처럼 관리자를 의미합니다. 이걸 합쳐보면 npm이라는 것은 Node.js로 만들어진 pakage(module)을 관리해주는 툴이라는 것이 됩니다.
 
 모듈(Module)이란 쉽게 말해 부품으로 보시면 됩니다. 이미 많은 개발자분들께서 기본적인 웹 서버를 구축하는데 필요한 부품들을 만들어 놓으셨고 그것들을 사용할 수 있게끔 공개해두었습니다. 이것을 오픈소스라고 부릅니다. 하지만 이러한 수 많은 도구들이 있어도 그것을 사용하는 방법을 모르면 그것들은 무용지물이 되므로 저희는 이것들을 가져다가 활용할 방법을 알아야 합니다.

 우선적으로 node.js 의 홈페이지의 Docs(사용설명서)와 친해져야 합니다. 

node.js Docs 사이트 링크

예를 들어보면, 자신이 작업할 폴더에 module.js 파일을 만들어두고 module.js 파일에 입력합니다.

var os = require('os');
console.log(os.platform());

 위 os라는 모듈은 현재 node.js가 구동되고 있는 운영체제 기반이 무엇인지 알려주는 모듈입니다. 위 코드를 입력하고 cmd 에서 node mondule.js 실행하면 win 32 가 출력됩니다.

 즉, os 는 Node js 라는 언어가 제공하는 모듈이고 JavaScript를 다룰 때 사용했던 Date, String, Array 등 JavaScript 라는 언어가 제공하는 모듈입니다. 이렇게 기본적인 모듈(기능)들을 결합해서 무언가를 만들 수 있는데 좋은 무언가를 만들기 위해선 좋은 부품이 필요합니다. 이렇듯 완성도가 높은 이미 개발된 타인의 모듈을 사용하는 방법으로 npm을 사용하는 방법이 있습니다. npm은 Node 계의 플레이 스토어라고 할 수 있습니다. npm이라는 패키지 매니저가 모듈들을 설치, 삭제, 업그레이드 해주고 소프트웨어가 복잡해질수록 각 모듈들에 대한 의존도가 높아지는데 이 의존성을 관리해줍니다. 다른 개발을 할 때도 노드 기반으로 만들어진 개발도구들을 사용한다. npm은 그래서 더 중요하기에 사용법을 잘 익혀놔야 합니다.

npm 사용설명서 사이트 링크

 과거 npm은 nodejs와 따로 설치해야 했으나 버전업이 된 요즘의 npm은 nodejs가 설치됨에 따라 같이 설치 됩니다. 물론 개별 설치도 가능하게 되어있습니다. 

NPM 주요 명령어

[설치 관련]
npm init
package.json을 만드는 명령어, 새로운 프로젝트나 패키지를 만들 때 사용
npm install [모듈명]
모듈 설치
npm install [모듈@버전]
모듈의 특정한 버전을 설치
npm install [주소]
특정한 저장소에 있는 모듈을 설치, 주소는 주로 Github에만 있는 모듈을 설치할 때 사용
  1. (npm 5 version 이전 버전만 해당) --save 또는 -S 옵션  
  2. --save-dev 또는 -D 옵션
  3. -g 옵션
  1. --save 또는 -S, dependencies에 추가
  2. --save-dev 또는 -D, devDependencies에 추가
  3. 글로벌 모듈에 추가, 이 프로젝트뿐만 아니라 다른 프로젝트도 해당 패키지를 사용할 수 있음
npm update
설치한 패키지를 업데이트
npm dedupe
npm의 중복된 패키지들을 정리할 때 사용, 가끔 잊을만할 때 쳐주면 용량이 줄어듬
npm docs
패키지에 대한 설명을 보여줌(그냥 npm 홈페이지 가서 보는게 훨씬 좋음..)
npm uninstall [모듈명]
모듈 삭제


[조회 관련]


npm root
node_modules의 위치를 알려줌
npm outdated
오래된 모듈이 있는지 알려줌, 오래되었고 package.json에 적어둔 버전 범위와 일치하면 빨간색으로, 오래되었지만 버전 범위와 일치하지 않으면 노란색으로 표시
npm ls 
모듈을 조회, 현재 설치된 패키지의 버전과 dependencies를 트리 구조로 표현
npm ls [모듈명]
해당 모듈이 있는지와, 해당 모듈이 어떤 패키지의 dependencies인지 보여줌
npm ll
더 자세한 정보를 줌
npm search
npm 저장소에서 패키지를 검색하는 명령어, 패키지의 이름, 설명 또는 키워드를 바탕으로 검색 결과가 나옴(그냥 npm 홈페이지 가서 보는게 훨씬 좋음..)
npm owner
패키지의 주인이 누군지 알려주는 명령어, 또는 여러 명의 주인을 설정하거나 지울 수 있음
npm bugs
버그가 발생했을 때 어떻게 패키지의 주인에게 연락을 취할지 알려줌, 주로 Github의 issues 탭을 염


[로그인 관련]


npm adduser
npm에 회원가입하는 명령어, 로그인 가능, npm login도 똑같은 역할
npm logout
반대로 logout할 때 사용
npm whoami
이름 그대로 내가 누군지 물어보는 명령어, 로그인한 상태라면 자신의 아이디를 알려줌


[출시 관련]


npm publish
모듈을 직접 출시, 버전 업그레이드를 할 때 사용하는 명령어
npm deprecate
이미 낸 패키지를 사용하지 않도록 권고하는 명령어, 자신이 어떤 버전을 출시했는데 치명적인 버그가 있다면 이 명령어를 사용해서 다른 사람들에게 사용하지 말도록 말해줌
npm unpublish
publish한 패키지를 다시 unpublish하는 것, 하지만 이 명령어보단 deprecate가 더 나은 이유가 이미 자신의 패키지를 다운로드한 사람들에게 피해를 입힐 수 있음
npm star
자신이 좋아하는 패키지를 표시하는 기능, 이 star이 많을 수록 인기 패키지 임
npm starts
특정 사람이 star한 패키지 목록을 확인 가능
npm version
버전 업데이트를 할 때 사용, 새로운 버전이 나왔다면 npm version [버전]


[실행 관련]


npm start
package.json의 scripts에 있는 start 명령어를 실행하는 부분, 만약 start 명령어를 따로 설정하지 않았다면 node server.js가 실행
npm stop
npm start했던 것을 멈추는 명령어
npm restart
npm stop 후에 다시 npm start를 하는 명령어
npm test
test 명령어를 실행
npm run
그 이외의 scripts를 실행하는 명령어, 예를 들어 scripts에 build 명령어가 있다하면, npm run build 하면 됨


[설정 관련]

npm cache
npm 내의 cache를 보여줌
npm cache clean
만약 npm에 문제가 생기거나 하면 제일 먼저 하는 cache를 지우기
npm rebuild
npm을 다시 설치하는 명령어, 에러가 발생했을 시 주로 npm cache clean을 한 후 이 명령어를 쳐서 재설치
npm config
npm의 설정을 조작하는 명령어
npm config list
현재 설정들을 볼 수 있음
npm set [이름] [값], npm get [이름]
속성을 설정하거나 조회할 수 있음