Express 백엔드 서버 세팅

ExpressTypeScript

1. 깃허브 레포지토리 만들고 클론하기

관련링크 (opens in a new tab)

git clone 링크 폴더이름

2. Node 프로젝트 시작

package.json 생성, 업데이트 초기화 - 관련링크 (opens in a new tab)
기본값으로 생성하는 법: npm init -y

npm init

3. Express 프레임워크

npm i express

4. Prisma ORM 세팅

관련링크 (opens in a new tab)

npm i prisma
      @prisma/client
npm i -D @types/node
npx prisma init

5. psql 접속

psql -h localhost -p 5432 -U 유저이름 -d postgres

데이터베이스 만들기

CREATE DATABASE 데이터베이스이름;

.env 파일 수정

DATABASE_URL="postgres://유저이름:비밀번호@localhost:5432/데이터베이스이름?schema=public"

Prisma Client 생성하기

npx prisma generate

Prisma Client 인스턴스 생성하기

prisma.ts 유틸리티 파일 생성

import "dotenv/config";
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../generated/prisma/client'
 
const connectionString = `${process.env.DATABASE_URL}`
 
const adapter = new PrismaPg({ connectionString })
const prisma = new PrismaClient({ adapter })
 
export { prisma }

데이터베이스 모델 추가하기 및 마이그레이션

prisma/schema.prisma 파일 수정 - 관련링크 (opens in a new tab)

prisma 포맷 - 관련링크 (opens in a new tab)

npx prisma format

마이그레이션

npx prisma migrate dev --name 마이그레이션이름

프리즈마 스튜디오 열기

npx prisma studio

시드 데이터 만들기

prisma/seed.ts 파일 만들기 - 관련링크 (opens in a new tab)

시딩 명령어 설정하기 prisma.config.ts 파일에 추가하기

migrations: {
  seed: "tsx prisma/seed.ts"
}

시딩 실행하기

npx prisma db seed

6. 타입스크립트

npm i -D typescript
         tsx
         @types/express
npm tsc --init

7. .gitignore 세팅

.gitignore 파일에 추가하기 - 관련링크 (opens in a new tab)
의도적으로 추적하지 않을 파일을 지정해 Git이 무시하게 한다

node_modules
.env
dist

5. package.json 수정

ES6 설정

관련링크 (opens in a new tab)

"type": "module"

script 추가

"dev": "tsx --watch --env-file=.env src/app.ts",
"build": "tsx",
"start": "node --env-file=.env dist/src/app.js"

8. 이외 패키지 추가

프리티어

npm i -D prettier
         prettier-plugin-packagejson

린트

npm i -D eslint
         eslint-plugin-unused-imports
         eslint-plugin-simple-import-sort
         eslint-plugin-import
         eslint-import-resolver-typescript
         @typescript-eslint/parser
         @typescript-eslint/eslint-plugin

허스키

npm i -D husky
         lint-staged
npx husky init

테스트

npm i -D supertest
         jest
         ts-jest
         @types/supertest

인증

npm i jsonwebtoken
npm i -D @types/jsonwebtoken

비밀번호 해싱

npm i bcrypt
npm i -D @types/bcrypt

로그

npm i pino
      pino-pretty

데이터 검증

npm i zod

통신

npm i socket.io

기타

npm i dotenv
      helmet
      express-rate-limit
      cors
npm i -D @types/cors
         @types/compression
         dotenv-cli

클라우드

npm i @aws-sdk/client-s3
© bgkRSS