๐คณ Nest.js ๋?
- Nest.js๋ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ Node.js ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ํ๋ ์์ํฌ์ด๋ค.
- JavaScript๋ฅผ ์ฌ์ฉํ๊ณ TypeScript๋ก ๊ตฌ์ถ๋์ด ์๋ฒฝํ๊ฒ ์ง์ํ๋ฉฐ OOP, FP, FRP ์์๋ฅผ ๊ฒฐํฉํฉ๋๋ค.
- OOP(Object Oriented Programming)
- FP(Functional Programming)
- FRP(Functional Reactive Programming)
- ๋ด๋ถ์ ์ผ๋ก Nest.js๋ Express์ ๊ฐ์ ๊ฐ๋ ฅํ Http ์๋ฒ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ ํ์ ์ผ๋ก Fastify๋ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์๋ค.
๐ Nest.js ์ฅ์
Nest.js๋ Express๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ์น ํ๋ ์์ํฌ๋ค. Java์ Spring์ ๋น์ทํ ์ํคํ ์ณ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ผ์ฐํ , ๋ณด์๊ณผ ๊ด๋ จํ์ฌ ๋ค์ํ ์ข์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์น๊ฐ๋ฐ์ ์์ฐ์ฑ์ ๋์ฌ ์ค๋ค.
๐ Nest.js ํ๋ก์ ํธ ์ ํ 1
$ npm i -g @nestjs/cli
$ nest new project-name
ํ์ฌ ํด๋์ ํ๋ก์ ํธ ์์ฑ์ nest new .
์ค์น์ ํจํค์ง ์ค์ : npm
ํฐ๋ฏธ๋์ nest ๋ฅผ ์ ๋ ฅํ๋ฉด nest ์ ๊ณตํ๋ ๋ชจ๋์ ํ๋ฒ์ ๋ณผ์์๋ค.
nest generate co //๋ช
๋ น์ด๋ก module์ ์
ํ
ํ ์ ์๋ค.
์ค์ฌ์ nest g co
Nest CLI ์ค์น์ ๋ํ ๋ ๋ง์ ์ ๋ณด ์๋์ ์ฌ์ดํธ์์ ํ์ธํ ์์๋ค.
https://docs.nestjs.com/cli/overview
๐ Nest.js ํ๋ก์ ํธ ์ ํ 2
1. ํ๋ก์ ํธ ์ค์น ์ดํ ์๋์ ํด๋ ๋ฐ ํ์ผ๋ค์ด ์์ฑ๋๋ค.
2. src/main.ts (env ํ๊ฒฝ ์ค์ ๋ฐ ํฌํธ ๋ฒํธ ์ค์ )
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const port = process.env.PORT || 3000;
await app.listen(port);
}
bootstrap();
3. ESLint & Prettier ์ฝ๋ ์ปจ๋ฒค์ ์ค์
ESLint ์ Prettier์ ๋ํ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์๋์ ์ฌ์ดํธ์์ ํ์ธํ ์์๋ค.
https://cometruedream.tistory.com/131
- vscode ์ฌ์ฉํ ๊ฒฝ์ฐ ctrl + shift + p๋ก Preferences: Workspace Settings(JSON) ์ด์ด ๋ค์์ ์ถ๊ฐ
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"eslint.alwaysShowStatus": true,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
}
- ํด๋น ํ๋ก์ ํธ ํด๋์ .prettierrc ์ค์ ์ ์ถ๊ฐ
# .prettierrc
{
"printWidth": 150,
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "all",
"bracketSpacing": true,
"semi": true,
"arrowParens": "always",
"endOfLine": "lf",
"proseWrap": "preserve"
}
4. ํ๊ฒฝ๋ณ์ ์ค์
- ์ผ๋ฐ์ ์ผ๋ก node.js ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ํ๊ฒฝ(production, development) ๋ณ ์์ดํ ๋ณ์ ๊ฐ์ .env ํ์ผ์ ํ์ฉํ์ฌ ์ค์ ํ๋ค. nest.js๋ .env ์ค์ ์ด ๊ฐ๋ฅํ๋ฐ ์ฐจ์ด์ ์ ConfigModule๋ฅผ ํ์ฉํ๋ค.
- ๊ด๋ จ ํจํค์ง ์ค์น: npm i --save @nestjs/config
- app.module.ts ์์ ์ฌ์ฉํ ๋ชจ๋ import
- appmodule ์์ ์ฌ์ฉํ ๋ชจ๋ ๊ฐ์ ธ์์ imports ์ค์
- {isGLobal: true} : ConfigModule๋ฅผ AppModule ์ด์ธ์ ๋ชจ๋์์ ๋ฐ๋ณต importํ ํ์์์ด ์ ์ญ ๋ชจ๋๋ก ์ค์ ํ๋ค๋ ๋ป์ด๋ค.
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
4. ๊ธฐ์ด ํ๊ฒฝ์ค์ ์ ํ ํ ํ ์คํธ
npm run start:dev //๋ช
๋ น์ด ์
๋ ฅ
์ฑ๊ณต์ ์ผ๋ก ์๋ฒ๋ฅผ ๋์๋ค.
๋ค์์๋ ๋ค์ํ ๋ชจ๋ ์ค์ ํ ๋ณด์์ค์ ๋ฑ์ ํด๋ณผ ์์ ์ด๋ค.
'Nest.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NestJS] AWS Parameter Store ํ๋ก์ ํธ 2ํ (0) | 2024.09.05 |
---|---|
[NestJS] AWS Parameter Store ํ๋ก์ ํธ 1ํ (2) | 2024.09.04 |
NestJS Lifecycle (์๋ช ์ฃผ๊ธฐ) ๊ฐ๋ (1) | 2024.05.07 |
Nest.js - ํํ ์ค ์ข ํฉ์๋์ธ API ํ์ฑ (25) | 2023.05.15 |
Nest.js Middleware logger (15) | 2022.12.05 |