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`: 다양한 유틸리티 함수를 제공하여, 코드를 간결하고 효율적으로 작성할 수 있게 합니다.
기본적인 프로젝트 세팅이 완료된다.
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 모듈을 가져올 수 있게 한다.
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에 맞게 저장될 것이다.