Back to all posts

설치

설치을 공부하며 이해한 흐름을 정리한 글입니다.

2026년 05월 07일5

설치을 공부하면서 이해한 흐름을 정리한 글입니다.

개인 메모를 그대로 옮기기보다, 코드와 주석을 따라가며 어떤 개념을 이해했는지에 초점을 맞췄습니다.

이번에 이해하려는 것

먼저 원문에 남긴 코드와 주석을 기준으로, 각 줄이 어떤 역할을 하는지 정리합니다.

기본 확인

node -v
npm -v
yarn -v
nest --version

Yarn 설치

npm install -g yarn

설치 확인:

yarn -v

NestJS CLI 설치

npm install -g @nestjs/cli

설치 확인:

nest --version

프로젝트 생성

nest new project-name

예시:

nest new nest-basic

패키지 매니저 선택 화면에서 yarn 선택.

프로젝트 이동:

cd nest-basic

실행

yarn start
yarn start:dev
yarn start:debug
yarn start:prod

용도:

  • yarn start: 일반 실행
  • yarn start:dev: 개발 모드, 파일 변경 감지
  • yarn start:debug: 디버그 모드
  • yarn start:prod: 빌드된 결과 실행

기본 접속:

http://localhost:3000

확인:

curl http://localhost:3000

빌드

yarn build

빌드 결과:

dist/

빌드 후 실행:

yarn start:prod

테스트

yarn test
yarn test:watch
yarn test:cov
yarn test:e2e

용도:

  • yarn test: 단위 테스트 실행
  • yarn test:watch: 테스트 watch 모드
  • yarn test:cov: 테스트 커버리지 확인
  • yarn test:e2e: e2e 테스트 실행

생성 명령어 기본형

nest generate <schematic> <name>
nest g <schematic> <name>

예시:

nest generate controller users
nest g controller users

generateg로 줄여 쓸 수 있다.

Module 생성

nest g module users

생성 파일:

src/users/users.module.ts

Controller 생성

nest g controller users

생성 파일:

src/users/users.controller.ts
src/users/users.controller.spec.ts

테스트 파일 없이 생성:

nest g controller users --no-spec

Service 생성

nest g service users

생성 파일:

src/users/users.service.ts
src/users/users.service.spec.ts

테스트 파일 없이 생성:

nest g service users --no-spec

Resource 생성

resource는 CRUD 기본 구조를 한 번에 생성한다.

nest g resource users

생성 과정에서 선택하는 항목:

What transport layer do you use?
> REST API
  GraphQL (code first)
  GraphQL (schema first)
  Microservice
  WebSockets

Would you like to generate CRUD entry points?
> Yes
  No

REST API + CRUD 선택 시 생성되는 기본 구조:

src/users/users.module.ts
src/users/users.controller.ts
src/users/users.controller.spec.ts
src/users/users.service.ts
src/users/users.service.spec.ts
src/users/dto/create-user.dto.ts
src/users/dto/update-user.dto.ts
src/users/entities/user.entity.ts

app.module.ts에도 자동 등록된다.

테스트 파일 없이 생성:

nest g resource users --no-spec

Provider 생성

nest g provider users

일반적으로 직접 많이 쓰기보다 service를 더 자주 사용한다.

Pipe 생성

nest g pipe common/pipes/validation

생성 예:

src/common/pipes/validation.pipe.ts

Guard 생성

nest g guard auth

생성 예:

src/auth/auth.guard.ts

Interceptor 생성

nest g interceptor logging

생성 예:

src/logging/logging.interceptor.ts

Filter 생성

nest g filter http-exception

생성 예:

src/http-exception/http-exception.filter.ts

Middleware 생성

nest g middleware logger

생성 예:

src/logger/logger.middleware.ts

Gateway 생성

WebSocket Gateway 생성:

nest g gateway events

Resolver 생성

GraphQL Resolver 생성:

nest g resolver users

DTO 생성

Nest CLI에 DTO 전용 schematic을 따로 쓰기보다 파일을 직접 만들거나 resource 생성 결과를 사용한다.

src/users/dto/create-user.dto.ts
src/users/dto/update-user.dto.ts

Entity 생성

Entity도 보통 직접 만들거나 resource 생성 결과를 사용한다.

src/users/entities/user.entity.ts

생성 옵션

--no-spec

테스트 파일을 생성하지 않음.

nest g controller users --no-spec
nest g service users --no-spec
nest g resource users --no-spec

--flat

폴더를 만들지 않고 현재 경로에 파일 생성.

nest g controller users --flat

--dry-run

실제로 파일을 만들지 않고 생성 결과만 미리 확인.

nest g resource users --dry-run

--project

모노레포나 여러 앱이 있는 workspace에서 대상 프로젝트 지정.

nest g module users --project api

자주 쓰는 조합

기능 단위로 직접 생성

nest g module users
nest g controller users
nest g service users

테스트 파일 없이:

nest g module users
nest g controller users --no-spec
nest g service users --no-spec

CRUD 기본 구조 생성

nest g resource users

테스트 파일 없이:

nest g resource users --no-spec

패키지 설치

일반 패키지:

yarn add package-name

개발 의존성:

yarn add -D package-name

예시:

yarn add @nestjs/config
yarn add class-validator class-transformer
yarn add -D @types/node

환경 설정 관련 패키지

yarn add @nestjs/config

Validation 관련 패키지

yarn add class-validator class-transformer

TypeORM 관련 패키지

yarn add @nestjs/typeorm typeorm

DB 드라이버는 사용하는 DB에 맞춰 추가 설치.

PostgreSQL:

yarn add pg

MySQL:

yarn add mysql2

SQLite:

yarn add sqlite3

Prisma 관련 패키지

yarn add prisma @prisma/client
yarn prisma init

Prisma 개발 의존성으로 설치하는 방식:

yarn add -D prisma
yarn add @prisma/client

명령어 요약

# 설치
npm install -g yarn
npm install -g @nestjs/cli

# 프로젝트
nest new nest-basic
cd nest-basic

# 실행
yarn start:dev

# 생성
nest g module users
nest g controller users
nest g service users
nest g resource users

# 테스트 파일 없이 생성
nest g controller users --no-spec
nest g service users --no-spec
nest g resource users --no-spec

# 확인
curl http://localhost:3000

관련 노트

  • [[📗 NestJS를 사용한 기초적인 동작 구현]]

마무리

정리하면, 원문 코드에서 확인한 개념을 작은 단위로 나누어 보면 전체 흐름을 훨씬 쉽게 이해할 수 있습니다.