본문 바로가기

Backend/NestJS

Nestjs 프로젝트 생성하며 알게된점 (package.json 내부의 모듈역할, dependencies 그리고 devDependencies)

NestJS로 어찌저찌 일을 하고는 있지만, 사실 부족한 개념들이 많은 것 같다. 

퇴근하고 NestJS 강의를 들으며 새로 알게된 사실들이 있어서 정리하고자 한다. 기존에는 신경을 쓰지 않았던 것들이다.

 

1) 터미널에서 nestjs의 특정 모듈, 타입스크립트 특정 버전을 명시하여 설치할 수 있다. 

npm install @nestjs/common@7.6.17 @nestjs/core@7.6.17 @nestjs/platform-express@7.6.17 reflect-metadata@0.1.13 typescript@4.3.2

 

2) package.json에서 보이는 NEST 관련 모듈들의 역할 

  "dependencies": {
    "@nestjs/common": "^10.0.0",
    "@nestjs/core": "^10.0.0",
    "@nestjs/platform-express": "^10.0.0",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^7.8.1"
  },

"@nestjs/common" : 함수,클래스 등 Nest로부터 필요한 것들을 포함함 (대체적으로 Nest를 구성하는 것들) 

"@nestjs/platform-express" : Nest는 HTTP 요청을 다루기 위해 ExpressJS 사용

"reflect-metadata" : 데코레이터가 일하도록 돕는다. 

"typescript" : Nest를 Typescript로 작성한다 

 

3) dependencies와 devDependencies의 차이 

package.json에서 필요한 부분만 보다보니까 devdependencies가 있는지는 오늘 처음 봤다.. 

 "dependencies": {
    "@nestjs/common": "^10.0.0",
    "@nestjs/core": "^10.0.0",
    "@nestjs/platform-express": "^10.0.0",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^7.8.1"
  },
  "devDependencies": {
    "@nestjs/cli": "^10.0.0",
    "@nestjs/schematics": "^10.0.0",
    "@nestjs/testing": "^10.0.0",
    "@types/express": "^4.17.17",
    "@types/jest": "^29.5.2",
    "@types/node": "^20.3.1",
    "@types/supertest": "^2.0.12",
    "@typescript-eslint/eslint-plugin": "^6.0.0",
    "@typescript-eslint/parser": "^6.0.0",
    "eslint": "^8.42.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-plugin-prettier": "^5.0.0",
    "jest": "^29.5.0",
    "prettier": "^3.0.0",
    "source-map-support": "^0.5.21",
    "supertest": "^6.3.3",
    "ts-jest": "^29.1.0",
    "ts-loader": "^9.4.3",
    "ts-node": "^10.9.1",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.1.3"
  },

dependencies는 npm install 라이브러리명을 통해서 설치된 것들 -> 애플리케이션 동작과 연관된다. 

devDependencies는 npm install 라이브러리명 --save-dev 혹은 npm install 라이브러리명 -d

로 설치하게 된다. -> 애플리케이션 동작과 직접적인 연관은 없지만, 이름 그대로 개발할때 필요한 라이브러리를 설치한다. 

 

dependencies -> 설치된 라이브러리는 배포할때 포함됨 

devDependencies -> 설치된 라이브러리는 개발할 때 필요한 라이브러리 -> 배포할때 포함X