[TIL] nest.js

Cherry Jin·2023년 12월 27일
0

sparta_내배캠

목록 보기
34/53
post-thumbnail

Nest.js 에서 프로젝트를 생성할 때에는 터미널에서 프로젝트 폴더를 만드는 것으로부터 시작한다.

nest new projectFoldernName
cd projectFoldernName //폴더로 이동

npm i @nestjs/config @nestjs/jwt @nestjs/passport passport passport-jwt @types/passport-jwt typeorm @nestjs/typeorm mysql2 multer bcrypt @types/bcrypt class-validator class-transformer multer @types/multer papaparse @types/papaparse joi typeorm-naming-strategies lodash @types/lodash

code . //Visual studio code 로 열기
프로젝트에 필요한 기본적인 라이브러리들

1. `@nestjs/config`: 환경 변수를 관리하게 해주므로, 개발 환경에 따라 다른 설정을 쉽게 할 수 있습니다.

2. `@nestjs/jwt`, `passport`, `passport-jwt`, `@nestjs/passport`, `@types/passport-jwt`: 이들은 사용자 인증 및 권한 부여를 관리합니다. 이를 통해 보안을 유지하고, 특정 사용자만 허용된 기능에 접근할 수 있게 합니다.

3. `typeorm`, `@nestjs/typeorm`, `mysql2`: 이들은 데이터베이스 관리를 돕습니다. 데이터를 쉽게 저장하고, 검색하고, 수정하고, 삭제할 수 있게 해줍니다.

4. `multer`, `@types/multer`: 사용자가 웹사이트에 파일을 업로드할 수 있게 합니다. 이를 통해 사용자 프로필 사진 등의 기능을 제공할 수 있습니다.

5. `bcrypt`, `@types/bcrypt`: 비밀번호를 안전하게 암호화하여, 데이터베이스에 저장하거나 통신할 때 보안을 유지합니다.

6. `class-validator`, `class-transformer`: 사용자 입력 등의 데이터의 유효성을 검사하고, 원하는 형태로 변환합니다. 이를 통해 오류를 줄이고, 데이터를 안전하게 처리할 수 있습니다.

7. `papaparse`, `@types/papaparse`: CSV 형태의 데이터를 쉽게 파싱하여 사용할 수 있게 합니다. 이를 통해 대량의 데이터를 쉽게 처리할 수 있습니다.

8. `joi`: 사용자 입력이나 설정 파일 등의 데이터의 유효성을 검사합니다. 이를 통해 오류를 줄이고, 웹사이트의 안정성을 유지할 수 있습니다.

9. `typeorm-naming-strategies`: 데이터베이스의 테이블 이름이나 컬럼 이름을 일관되게 관리할 수 있게 합니다. 이를 통해 코드의 가독성을 높이고, 유지보수를 용이하게 할 수 있습니다.

10. `lodash`, `@types/lodash`: 다양한 유틸리티 함수를 제공하여, 코드를 간결하고 효율적으로 작성할 수 있게 합니다.

기본적인 프로젝트 세팅이 완료된다.


  1. tsconfig.json 파일을 수정해 주어야 한다.
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false,
    "esModuleInterop": true
  }
}

맨 아래에 esModuleInterop을 추가하고 true 로 입력한다. ES6모듈을 준수하여 CommonJS 모듈을 가져올 수 있게 한다.

  1. main.ts에서 ValidationPipe를 설정한다.
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';

import { AppModule } from './app.module';

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

  app.useGlobalPipes(
    new ValidationPipe({
      transform: true,
    }),
  );

  await app.listen(3000);
}

bootstrap();

ValidationPipe 를 통해서 transform된 데이터가 DTO에 맞게 저장될 것이다.

profile
풀스택이 되버린 주니어 개발자

0개의 댓글