Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

mooni

[NestJS] Nest CLI 의존성 설치하며 뜯어보기 본문

NestJS

[NestJS] Nest CLI 의존성 설치하며 뜯어보기

mooni_ 2025. 7. 1. 19:53

NestJS로 백엔드를 입문해보려 한다.

이 포스트에서는 NestJS 프로젝트를 설정하고 필수 라이브러리를 설치하며, 내부 흐름과 설정 파일까지 함께 살펴본다.


라이브러리 설치하기

NestJS를 실행하기 위해 기본적으로 아래 라이브러리들을 설치한다.

 

1️⃣ @nestjs/common

NestJS의 핵심 기능(데코레이터, 헬퍼 함수 등)을 포함한다.

 

2️⃣ @nestjs/core

NestJS의 핵심 런타임 패키지로, 의존성 주입 컨테이너 등 프레임워크의 중심이 된다.

 

3️⃣ @nestjs/platform-express

NestJS가 HTTP 서버로 사용할 플랫폼 중 하나인 Express를 사용한다.

NestJS는 Express와 Fastify를 지원하지만, 기본 예제는 Express로 진행한다.

 

4️⃣ reflect-metadata

NestJS는 데코레이터를 사용해 메타데이터를 다룬다. 이를 위해 reflect-metadata 라이브러리를 설치한다.

 

5️⃣ typescript

NestJS는 TypeScript 기반으로 개발된다. JavaScript로도 가능하지만 실무에서는 대부분 TypeScript를 사용하므로 tsconfig.json 설정이 필요하다.


tsconfig.json 작성하기

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es2017",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}
  • experimentalDecorators : TypeScript에서 데코레이터 문법을 사용하기 위해 활성화한다.
  • emitDecoratorMetadata : 런타임에 데코레이터의 메타데이터를 포함해 의존성 주입 등을 처리할 수 있게 한다.

NestJS 기본 구조와 흐름 이해하기

NestJS는 아래 흐름으로 동작한다. NestJS 프로젝트에서 한 개의 Controller와 한 개의 Module은 필수다.

Module은 Controller와 Provider(Service)를 등록하고 구성한다

 

1️⃣ Request

클라이언트 요청을 받는다.

 

2️⃣ Pipe

요청 데이터 유효성 검증 및 변환을 담당한다.

 

3️⃣ Guard

인증 및 권한 확인 로직을 수행한다.

 

4️⃣ Controller

요청을 처리할 함수를 매핑한다.

 

5️⃣ Service

비즈니스 로직을 수행한다.

 

6️⃣ Repository

데이터베이스와의 실제 연결 및 CRUD를 담당한다.


기본 파일 규칙

  • main.ts → bootstrap() 함수로 애플리케이션을 실행한다.
  • app.controller.tsAppController 클래스에서 라우팅 로직을 작성한다.
  • app.module.tsAppModule 클래스에서 모듈들을 구성한다.
  • 파일 이름은 name.type_of_thing.ts 형식을 따른다.(ex, app.controller.ts, app.service.ts 등)