URL 단축기 만들기 - 2. 프로젝트 셋업
이번에는 백엔드 프로젝트 셋업 방법을 다뤄볼 거에요.
일단 모노레포를 세팅해 봅시다.
$ mkdir url-shortener
$ cd url-shortener
$ git init
$ yarn init -2 -w -y
vscode에서 pnp를 지원하기 위한 패키지와 필요한 플러그인을 설치해 줍시다.
$ yarn add --dev prettier typescript
$ yarn plugin import typescript
$ yarn plugin workspace-tools
$ yarn dlx @yarnpkg/sdks vscode
이제 nestjs 프로젝트를 세팅해 봅시다.
먼저 nestjs cli를 설치해 주세요
npm i -g @nestjs/cli
이제 프로젝트를 생성해 봅시다.
$ cd packages
$ nest new backend
$ cd backend
$ rm -rf .git
backend의 .gitignore을 복사해서 .prettierignore로 이름을 바꿔주세요!
(prettier이 불필요한 파일까지 포맷팅하지 않게 하기)
package.json에서 start:dev
스크립트를 dev
스크립트로 바꾸고 --preserveWatchOutput을
추가해 주세요.
"dev": "nest start --watch --preserveWatchOutput",
그리고 루트 폴더에 .prettierignore을 추가해 주세요.
.yarn
.pnp.*
package.json에 dev, test 스크립트를 추가해 주세요.
(test 스크립트는 아직 테스트코드는 한번도 안써봐서 쓸지 모르겠어요)
뭐 이렇게 된 김에 TDD를 시도해 볼게요...?
{
"name": "url-shortener",
"packageManager": "yarn@3.3.0",
"private": true,
"workspaces": [
"packages/*"
],
"devDependencies": {
"prettier": "^2.8.0",
"typescript": "^4.9.3"
},
"scripts": {
"dev": "yarn workspaces foreach -pi run dev",
"test": "yarn workspaces foreach -i run test"
}
}
이제 패키지 설치 후 프로젝트를 실행해 봅시다.
$ yarn
$ yarn dev
➤ YN0000: [8:45:18 PM] Starting compilation in watch mode...
➤ YN0000:
➤ YN0000: [8:45:20 PM] Found 0 errors. Watching for file changes.
➤ YN0000:
➤ YN0000: [Nest] 84968 - 12/05/2022, 8:45:21 PM LOG [NestFactory] Starting Nest application...
➤ YN0000: [Nest] 84968 - 12/05/2022, 8:45:21 PM LOG [InstanceLoader] AppModule dependencies initialized +25ms
➤ YN0000: [Nest] 84968 - 12/05/2022, 8:45:21 PM LOG [RoutesResolver] AppController {/}: +5ms
➤ YN0000: [Nest] 84968 - 12/05/2022, 8:45:21 PM LOG [RouterExplorer] Mapped {/, GET} route +2ms
➤ YN0000: [Nest] 84968 - 12/05/2022, 8:45:21 PM LOG [NestApplication] Nest application successfully started +2ms
뭐 이러면 백엔드 세팅은 끝난거겠죠...?
소스코드는 여기에!
GitHub - paringparing/url-shortener: something
something. Contribute to paringparing/url-shortener development by creating an account on GitHub.
다음엔 데이터베이스 모델?을 만들어 볼게요!
사실 edgedb라는 프로젝트를 알게 되고나서 한번도 안써봐서 edgedb를 선택하게 되었네요!
잘못된 부분이 있다면 알려주시면 감사할것 같아요!