mooni
[NestJS] Nest CLI 의존성 설치하며 뜯어보기 본문
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은 필수다.
1️⃣ Request
클라이언트 요청을 받는다.
2️⃣ Pipe
요청 데이터 유효성 검증 및 변환을 담당한다.
3️⃣ Guard
인증 및 권한 확인 로직을 수행한다.
4️⃣ Controller
요청을 처리할 함수를 매핑한다.
5️⃣ Service
비즈니스 로직을 수행한다.
6️⃣ Repository
데이터베이스와의 실제 연결 및 CRUD를 담당한다.
기본 파일 규칙
- main.ts → bootstrap() 함수로 애플리케이션을 실행한다.
- app.controller.ts → AppController 클래스에서 라우팅 로직을 작성한다.
- app.module.ts → AppModule 클래스에서 모듈들을 구성한다.
- 파일 이름은 name.type_of_thing.ts 형식을 따른다.(ex, app.controller.ts, app.service.ts 등)