개발노트/Node.js

[Node.js] NPM

Dahoon06 2021. 9. 23. 23:14
728x90
반응형
NPM(Node Package Manager)

자바스크립트 패키지 매니저이고 NodeJS에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며 설치/관리를 수행할 수 있는 CLI를 제공한다.

 

패키지 설치

npm i <패키지명> 명령어로 손쉽게 패키지가 설치된다.

설치에는 local install과 global install이 있다. 기본값은 local install이고 local package해당 프로젝트 내에서만 사용할 수 있다.
npm i -g <패키지명> 명령어로 global install을 할 수 있다. global package모든 프로젝트에서 공통으로 사용할 수 있다. global packge install path는 다음과 같다.

 

의존성 관리

패키지들의 버전이 빈번하게 업데이트되므로 프로젝트가 의존하고 있는 패키지들이 관리될 필요가 있다.

npm에서는 package.json 파일로 프로젝트의 정보와 패키지들의 의존성을 관리한다.

package.json

package.json 에는 사용하고 있는 패키지들의 명세가 작성되어 있기 때문에 프로젝트를 다른 사람에게 공유하고 싶다면 package.json을 공유하여 개발 환경을 빠르게 구축할 수 있다. JAVA에서는 Maven의 pom.xml과 비슷한 역할을 한다고 한다.
package.json은 프로젝트 루트에서 npm init -y 명령어로 생성할 수 있다.

 

ex)

{
  "name": "saojeong-service",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "@sentry/node": "^5.19.2",
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "dotenv": "^8.2.0",
    "eslint-config-airbnb-base": "^14.2.0",
    "eslint-plugin-import": "^2.22.0",
    "express": "~4.16.1",
    "faker": "^4.1.0",
    "hbs": "^4.1.1",
    "http-errors": "~1.6.3",
    "mariadb": "^2.4.2",
    "method-override": "^3.0.0",
    "morgan": "~1.9.1"
  },
  "devDependencies": {
    "eslint": "^7.5.0",
    "eslint-config-prettier": "^6.11.0",
    "eslint-plugin-prettier": "^3.1.4",
    "mysql2": "^2.1.0",
    "prettier": "^2.0.5"
  }
}

 

package.json 에서 name  version 은 생략할 수 없다. 

dependencies 에는 프로젝트가 의존하는 패키지들의 이름과 버전을 명시한다.

패키지에서 사용하는 패키지들을 말한다. npm i <패키지명> 으로 패키지를 설치하면 dependencies 에 명시되지 않는다. dependencies 에 명시하려면 npm i --save <패키지명> 을 사용하자. 

 

NPM@5부터는 --save가 기본 옵션이라고 한다.
devDependencies 에서는 개발 단계에서만 사용하는 패키지를 명시한다. npm i --save-dev <패키지명> 으로 설치하면 된다.

 

만약 내가 Git을 통해 프로젝트를 배포받았다면 프로젝트 루트에서 npm i 를 입력해야 프로젝트가 정상적으로 동작한다.

패키지 파일들은 모두 gitignore 당하기 때문에 package.json 에 명시된 dependencies 를 보고 새로 설치해야한다.

728x90
반응형