본문 바로가기
개발자 💻/NestJS

[초보자의 눈으로 보는 NestJS] 2. NestJS 보일러플레이트 설치

by 블루로봇 2023. 3. 13.

2. NestJS 보일러플레이트 설치

요약

이전 글에서는

 

[초보자의 눈으로 보는 NestJS] 1. NestJS 프레임워크

1. NestJS 프레임워크 요약 본 글에서는 NestJS 프레임워크에 대해서 소개합니다. NestJS 보일러플레이트를 설치하기 이전, 필요한 Node.js와 패키지 매니저를 설치합니다. 1-1. NestJS 프레임워크 NestJS의

ts01.tistory.com

  • NestJS 프레임워크를 설명하였습니다.
  • NestJS 보일러플레이트를 설치하기 위해 필요한 Node.js와 패키지 매니저를 설치하였습니다.

본 글에서는

  • NestJS CLI(Command Line Interface)를 통해 NestJS 보일러플레이트를 설치합니다.
  • 보일러플레이트의 구성을 확인하고, 실행해 봅니다.

 

2-1. 보일러플레이트(Boilerplate)란?

제가 처음 실무를 접하고 들었던 단어 중 생소하다고 느꼈던 단어가 이 "보일러플레이트" 입니다. 보일러플레이트(Boilerplate)는 19세기에 보일러 회사가 자신들의 생산 제품에 회사의 로고나 문구 등을 강철판에 새겨 찍어낸 것을 의미합니다. 이러한 강철판의 생산은 단순 반복적인 작업이었기 때문에, 준비되어 있는 기계에 넣고 동일하게 각 제품마다 찍어내었습니다.

 

컴퓨터 프로그래밍에서 "보일러플레이트"는 각종 프로젝트의 기본이 되는, 재사용될만한 소스 코드 기반을 의미합니다. 프로젝트를 시작할 때마다 기본이 될만한 세팅들을 매번 넣어준다면 초기 준비 시간이 많이 소요될 수 있기 때문에, 자주 사용되는 "상용구 코드"를 미리 프로젝트화 하여 제작해두는 것입니다. 여러 회사들은 각자 사내에서 주요 기술이라고 여기는 것들을 모아둔 보일러플레이트를 만들고, 그 코드를 많은 프로젝트들의 시작점으로 사용합니다.

 

2-2. NestJS 보일러플레이트

NestJS에서도 새로운 프로젝트를 쉽게 시작할 수 있는 보일러플레이트를 제공합니다.

공식 문서에서는 overview/first-step에서 이 내용을 확인할 수 있습니다.

보일러플레이트 설치에는 NestJS CLI (Command Line Interface)가 이용됩니다.

 

2-2-1. NestJS CLI 설치

아래 명령어를 통해 @nestjs/cli 를 설치합니다.

$ yarn add global @nestjs/cli

 

  • yarn 패키지 매니저의 add 명령어는 새로운 패키지를 주어진 환경에 다운로드합니다.
  • global 옵션은 yarn이 존재하는 전체 환경에 이 패키지를 반영하겠다는 것을 의미합니다.

 

yarn 패키지 매니저 설치와 함께 사용자의 터미널 환경에서 전역으로 yarn 명령어를 쓸 수 있는 것처럼 이제 @nestjs/cli 또한 전역으로 사용할 수 있게 되었습니다. 즉, 하나의 PC 환경에서는 이 명령어를 한번 실행해두면, 어디서든 NestJS CLI를 이용할 수 있습니다.

 

2-2-2. NestJS 보일러플레이트 설치

NestJS의 실행 명령어는 nest 입니다. 아래 명령어를 통해 이제 새로운 보일러플레이트를 시작해 보도록 하겠습니다.

 

$ nest new <MY-PROJECT-NAME>

 

명령어를 입력하면 여러분이 지정한 이름 <MY-PROJECT-NAME>을 가진 보일러플레이트가 다운로드됩니다.
다운로드 중에 사용할 패키지 매니저를 선택해야 하는데, 저는 yarn 패키지 매니저를 이용하기 위해 yarn으로 선택하였습니다.

 

보일러플레이트 세팅에 필요한 다양한 패키지들이 같이 설치되었고, NestJS의 코어 파일들이 생성되었습니다!

 

2023년 3월 초, 국내 NestJS 보일러플레이트 설치가 안 되는 현상이 있습니다. 이는 보일러플레이트에 필요한 ts-jest라고 하는 패키지의 설치 중 발생하는 문제인데, 특히, 기업 인트라넷이나 특정 인터넷망에서 안 된다는 이야기가 많았습니다. 저는 특정 인터넷에서 다운로드가 안 되는 경우, 휴대폰 핫스팟을 이용하거나 외부 와이파이를 통해 다운로드를 수행했었습니다.

 

 

2-3. 보일러플레이트 구경하기

이제 보일러플레이트 설치 이후 나오는 친절한 명령어처럼 해당 프로젝트 디렉토리로 들어가겠습니다.

 

$ cd <MY-PROJECT-NAME>

 

프로젝트의 빌드와 관련된 각종 디렉토리 및 파일들이 보일 것입니다.

 

프로젝트에 필요한 설명과 각종 의존성들은 Node.js와 같이 package.json 파일에 명시되어 있습니다.

그리고 해당 기초 의존성들이 node_modules 디렉토리 내부에 설치되어 있습니다.

우리에게 제일 중요한 소스 코드는 src 디렉토리에 존재합니다.

 

보일러플레이트가 해당 디렉토리 내에 몇가지 코어 파일들을 생성하였습니다.

 

src
├── app.controller.spec.ts
├── app.controller.ts
├── app.module.ts
├── app.service.ts
└── main.ts

 

각 파일들에 대한 간단한 정의는 아래와 같습니다.

 

파일명 설명
app.controller.spec.ts 컨트롤러에 대한 단위 테스트
app.controller.ts 유저와 통신하고 서비스의 패턴을 정의하는 컨트롤러
app.module.ts Application의 실행 루트 모듈
app.service.ts 실제 로직을 구현하는 기본 서비스
main.ts NestJS Application 인스턴스를 생성하는 메인

 

main.ts

import { NestFactory } from "@nestjs/core";
import { AppModule } from "./app.module";

async function bootstrap() {
    const app = await NestFactory.create(AppModule);
    await app.listen(3000);
}
bootstrap();

 

AppModule 을 기반으로 NestJS가 실행될 수 있는 애플리케이션이 됩니다. 해당 애플리케이션은 상기에 기재된 것과 같이 3000 포트를 통해 반응할 수 있게 됩니다. bootstrap() 함수를 통해 NestJS 애플리케이션이 실행됩니다.

 

2-4. 보일러플레이트 실행하기

package.json 파일에서 scripts 부분을 확인하여 실행 명령어를 확인합니다.

 

# "start": "nest start"
$ yarn start

# "start:dev": "nest start --watch"
$ yarn start:dev

 

start 명령어를 통해 서버를 실행할 수 있습니다.

 

start:dev 명령어를 통해 watch 모드로 서버를 실행할 수 있습니다. Watch 모드에서는 파일 변경 및 저장에 따라 실시간으로 서버를 변경 및 실행할 수 있습니다. 개발 단계에서는 이 watch 모드를 적극 활용하도록 합니다.

 

여기서는 보일러플레이트가 추천해준 아래 명령어를 통해 NestJS 보일러플레이트를 시작해 보겠습니다.

 

$ yarn run start

실행이 올바르게 되었다면 위와 같이 메세지가 출력됩니다.

 

자신이 사용하는 웹 브라우저에서 http://localhost:3000 경로를 통해 서버가 응답하는 상태인지 확인해 봅니다.

 

읽어주셔서 감사합니다.

Hello World! 가 출력된 화면을 보셨다면 NestJS 보일러플레이트 설치 및 실행이 완료되었습니다. 다음 시리즈에서는 보일러플레이트가 다운로드한 각 코어 파일들에 대해 설명하도록 하겠습니다.