개발일지
[NestJS] 프로젝트 세팅하기 본문
프로젝트 구조
프로젝트 기본 구조는 다음과 같습니다. 편의상 필요한 모듈만 나타냅니다.
├── prisma // prisma 관련 폴더
│ ├── base.prisma
│ └── schema.prisma
├── src
│ ├── common // 공통으로 사용되는 모듈
│ │ ├── dto
│ │ ├── interface
│ │ └── middleware
│ └── users // module
│ ├── jwt // jwt 관련 폴더
│ ├── users.controller.ts
│ ├── users.module.ts
│ ├── users.prisma
│ ├── users.repository.ts
│ └── users.service.ts
├── app.module.ts
├── main.ts
DB 설정하기
Prismix
prisma file을 모듈 별로 관리하고 싶지만 prisma에서는 해당 기능을 제공하지 않습니다. 이러한 기능을 제공해주는 prismix를 사용했습니다.
prismix.config.json
{
"mixers": [
{
"input": [
"prisma/base.prisma",
"./src/users/users.prisma",
],
"output": "prisma/schema.prisma"
}
]
}
위와 같이 설정 후 $ yarn prismix
명령어를 사용하면 input의 파일들이 output으로 합쳐집니다.
Prisma
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
schema.prisma 파일에 데이터베이스 연결 설정 후 .env 파일에 환경변수를 정의합니다. RDS 적용 전 임시로 sqlite을 사용했습니다.
DATABASE_URL="file:./dev.db"
공통 모듈 관리하기
common의 모듈을 import할 때 상대 경로를 입력하게 되면 경로 표기가 지저분해지고 가독성이 떨어질 수 있습니다. 따라서 @ symbol 사용하여 common에 속한 모듈 경로를 @vote/common
하나로 묶어줬습니다. tsconfig.json 파일에 경로를 설정해줍니다.
tsconfig.json
{
"compilerOptions": {
...
"paths": {
"@vote/common": ["src/common],
"@vote/middleware": ["src/common/middleware"]
}
}
}
index.ts 파일에는 포함할 module들을 설정해줍니다.
export * from './dto';
export * from './interface';
이제 상대경로없이 모듈을 import 할 수 있습니다.
import { CustomException } from '@vote/middleware';
++ 후에 세팅할 것들
- 환경 분리하기 (dev/prod)
- RDS postgreSQL 설정하기
- 배포 관련 세팅
'NestJS, Node.js > #01 Project - 투표 커뮤니티' 카테고리의 다른 글
[NestJS] 로그인 구현 #1 - 유효성 검증 (0) | 2022.10.27 |
---|---|
[NestJS] 회원가입 구현 #2 - 유효성 검증 (0) | 2022.10.27 |
[NestJS] 회원가입 구현 #1 - Pipe 적용 (0) | 2022.10.27 |
[NestJS] 예외 처리와 exception filter (0) | 2022.10.27 |
[NestJS] Interceptor 적용하기 (0) | 2022.10.27 |