NestJS 시작하기 : 설치 및 함께 쓰는 라이브러리

Outclass·2022년 7월 4일
0

NestJS+GraphQL+TypeORM 

목록 보기
1/16
post-thumbnail

개발공부를 하다보니 프론트 엔드가 나에게 더 맞다는 판단이 들었고, 나는 앞으로 프론트 엔드 외길 인생을 살 것 같았는데...

막상 내가 정말 만들고 싶은 것들을 구현하려면 백엔드도 어느정도 소화할 수 있어야 한다는 것을 뼈저리게 느꼈다. 특히 팀이 아닌 혼자서 무언가를 해야하는 상황에서는 필수적이었다.

그래서 마음 먹은 김에 백엔드 프레임워크를 공부하기로 했다! 하지만 다른 언어를 배우는 것까지는 아직은 무리라고 판단, 자바스크립트 생태계에서 가장 핫한(?) NestJS부터 배워보고자 한다.

여담이지만 무엇보다 일단 고양이 로고가 정말 마음에 든다. 그런데 여기저기 찾아봐도 왜 Nest가 고양이 로고를 선택했는지는 안 나와 있는 것 같다.(누가 좀 아시면 알려주세요!ㅠ)

cli설치

npm i -g @nestjs/cli

프로젝트 시작

nest new project-name
  • 자동으로 필수파일 및 폴더구조 생성

함께 설치할 라이브러리들

class-validator 유효성검사 데코레이터

//설치
npm i class-validator
//유효성 검사를 위한 데코레이터 import
import { IsBoolean, IsString, Length } from 'class-validator';

//argument생성
@ArgsType()
export class createDto {
  @Field((type) => String)
  //class-validator설치해야함
  @IsString()
  @Length(5, 8)
  name: string;
	...
}

class-transformer 유효성검사 파이프 적용

//설치
npm i class-transformer
//main.ts
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  //class-transformer설치해야함
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(3000);
}
bootstrap();

configuration module

npm i @nestjs/config

cross-env

npm i cross-env
  • 가상변수를 설정할 수 있도록 도와줌. dotenv위에서 작동
//in nest.js app.module.ts
imports: [
  //cross-env configuration
  ConfigModule.forRoot({
    //전역접근가능
    isGlobal: true,
    //env파일 참조할 경로
    envFilePath: process.env.NODE_ENV === 'dev' ? '.env.dev' : '.env.test',
    ignoreEnvFile: process.env.NODE_ENV === 'prod',
  }),
  ...
]
//package.json
"scripts": {
	...
    "start": "cross-env NODE_ENV=prod nest start",
    "start:dev": "cross-env NODE+ENV=DEV nest start --watch",
    "start:debug": "nest start --debug --watch",
    ...
    }
  • joi 환경변수 유효성 검사 툴

쏟아지는 정보들이 너무 많아서, 천천히 곱씹으면서 공부해야할 것 같다.

profile
When you stop having big dreams that’s when you’ve died, despite not being buried yet.

0개의 댓글