HyeGyeong
HyeGyeong 프로그래머를 꿈꾸며 JavaScript 공부 중

[NodeJS] NPM(Node Package Manager)이란?

[NodeJS] NPM(Node Package Manager)이란?

NPM? (Node Package Manager)

  • NPM이 없다면?
    • 누군가 만든 Node.js package(Express와 같은?)를 공유한다고 할 때, 사이트 등에서 다운을 받는다. 그 package가 update 된 경우 메일과 같은 수단으로 알림을 받으면 다시 사이트로 가서 새 버전을 다운 받는다. 매우매우매우*1000 귀찮은 일…
  • Node.js와 관련된 Package들을 모아놓고 다운받을 수 있는 저장소 같은 개념.
    • package를 다운받고, update하고, 관리할 수 있는 등… 모든 일들을 NPM을 통해 할 수 있다.

NPM 다운?

  • Node.js를 install하면 같이 install 됌.
  • NPM 유무 check
1
2
3
npm -v
// 현재 버전 6.9.0
// 없다면 npm: command not found 와 같은 글이 나옴.

NPM 사용법

  • npm init
    • 여러가지 질문이 나오면서 설정이 시작 됌.
    • 모든 옵션을 ‘yes’로 하고 싶다면 npm init -y
    • package.json file이 생성 됌. npm init의 유무는 package.json이 있는지 체크!
      1
      2
      3
      4
      5
      6
      7
      8
      
      {
        "name":"example",
        "version": "1.0.0",
        "description": "package.json file example",
        "author": "Hyegyeong310",
        "license":"ISC"
        ...
      }
      
  • package install 방법
    • npm install [package name]
    • npm은 꼭 프로젝트 폴더에서 실행해야 한다. (package.json이 있는 폴더에서)
      • package.json이 없는 곳에서 npm을 실행시키면 package.json을 읽지 못해서 내가 원하지 않은 다른 곳에 package.json을 만든다.

package.json?

  • 누군가와 협업하고 있을 때 node_modules 폴더를 모두 건내줄 필요가 없음. 또는 github에 용량이 큰 node_modules 폴더를 올릴 필요 없음.
  • package.json이 있으면 dependencies package들을 찾아서 npm install 명령어로 다운로드 됌.

dependency와 별개로 패키지를 설치하고 싶을 땐?

  • 프로젝트 실행과 관련없는(dev용으로 필요하다던지…) 패키지를 설치할 때는 --save-dev 또는 -D 옵션을 붙인다.
  • node index.js의 경우 변경사항이 있을 때마다 껐다 켜줘야하는 상황이 발생한다. 이럴 때 사용하면 좋은 nodemon package를 예로 들면 npm install nodemon -D로 설치할 수 있고, package.json에 아래와 같은 항목이 추가된 것을 확인할 수 있다.
1
2
3
4
5
6
// package.json

...
"devDependencies": {
  "nodemon": "^1.19.1"
}

nodemon?

1
2
3
4
5
6
7
// package.json
"scripts": {
  "start": "nodemon --exec index.js",
},
"devDependencies": {
  "nodemon": "^1.19.1"
}
  • npm start를 한 후 수정을 하고 저장하면, 자동으로 다시 실행해준다.