프로그래밍/Nest.js

Nest.js 프로젝트 설정: 기본 설정 및 환경 설정 가이드

shimdh 2025. 3. 18. 10:20
728x90

Nest.js는 현대적인 서버 측 애플리케이션을 구축하기 위한 강력한 프레임워크로, 개발자가 효율적이고 구조화된 코드를 작성할 수 있도록 돕는 다양한 기능을 제공합니다. 이 블로그 포스트에서는 Nest.js 프로젝트의 기본적인 세팅 방법과 이를 통해 애플리케이션의 환경을 어떻게 조정할 수 있는지에 대해 자세히 알아보겠습니다.

1. 기본 설정

프로젝트를 시작하기 전에, 먼저 필요한 도구와 라이브러리를 설치해야 합니다. Nest CLI를 사용하면 이러한 과정을 간소화할 수 있으며, 이를 통해 개발자는 보다 빠르고 효율적으로 프로젝트를 시작할 수 있습니다.

Nest CLI 설치

Nest CLI를 설치하기 위해 아래의 명령어를 실행합니다.

npm install -g @nestjs/cli

새로운 프로젝트 생성

새로운 Nest.js 프로젝트를 생성하기 위해 다음 명령어를 사용합니다.

nest new project-name

위 명령어를 실행하면 새로운 Nest.js 프로젝트가 생성되며, 필수 패키지가 자동으로 설치됩니다. 이 과정에서 프로젝트의 기본 구조가 설정되고, 개발자가 즉시 작업을 시작할 수 있는 환경이 마련됩니다.

2. 폴더 구조 이해

Nest.js는 모듈 기반 아키텍처를 따르므로, 각 기능별로 디렉토리가 나누어져 있습니다. 일반적으로 다음과 같은 주요 디렉토리가 포함됩니다:

  • src: 소스 코드가 위치하는 곳으로, 애플리케이션의 모든 비즈니스 로직이 이곳에 포함됩니다.
  • app.module.ts: 애플리케이션의 루트 모듈로, 모든 모듈과 서비스를 등록하는 역할을 합니다.
  • main.ts: 애플리케이션이 시작되는 진입점 파일로, 서버의 초기화 및 설정을 담당합니다.

이러한 구조는 유지 보수성과 확장성을 높이는 데 큰 도움을 주며, 개발자가 프로젝트를 이해하고 관리하는 데 필요한 명확한 경로를 제공합니다.

3. 환경 변수 관리

환경 변수를 통해 다양한 환경(개발, 테스트, 프로덕션 등)에서 서로 다른 값을 사용할 수 있습니다. 이를 위해 .env 파일을 사용할 수 있으며, dotenv 패키지를 활용하여 쉽게 관리할 수 있습니다. 환경 변수를 적절히 설정하면 애플리케이션의 유연성을 높이고, 다양한 환경에서의 배포를 용이하게 할 수 있습니다.

패키지 설치

환경 변수를 관리하기 위해 dotenv 패키지를 설치합니다.

npm install dotenv

.env 파일 생성 예시

.env 파일을 생성하고 다음과 같이 환경 변수를 정의합니다.

DATABASE_HOST=localhost
DATABASE_PORT=5432
JWT_SECRET=mysecretkey

환경 변수 로드하기 (main.ts)

main.ts 파일에서 환경 변수를 로드하는 방법은 다음과 같습니다.

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as dotenv from 'dotenv';

async function bootstrap() {
  dotenv.config();
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

위와 같이 구성하면 .env 파일에 정의된 변수를 코드 내에서 사용할 수 있게 되어, 개발자는 환경에 따라 유동적으로 설정을 변경할 수 있습니다.

4. 전역 파라미터 및 기타 기본 설정

애플리케이션의 전역 파라미터나 미들웨어 등을 추가하는 것도 중요합니다. 예를 들어 로깅이나 에러 핸들링 같은 공통 기능들을 전역으로 적용하고 싶다면 아래와 같이 할 수 있습니다:

import { MiddlewareConsumer, Module, RequestMethod } from '@nestjs/common';
import { LoggerMiddleware } from './logger.middleware';

@Module({
 // ...모듈 관련 메타 데이터...
})
export class AppModule {
 constructor(private readonly app: Application) {}

 configure(consumer: MiddlewareConsumer) {
   consumer.apply(LoggerMiddleware).forRoutes({ path: '*', method: RequestMethod.ALL });
 }
}

이렇게 하면 모든 요청에 대해 로깅 미들웨어가 작동하게 되어, 애플리케이션의 모든 활동을 기록하고 모니터링할 수 있는 기반이 마련됩니다.

결론

기본 설정 및 환경 설정은 Nest.js 프로젝트의 기초를 다지는 단계로서 매우 중요합니다. 올바른 폴더 구조와 환경 변수 관리는 개발자의 생산성을 높이고 유지 보수성을 향상시키는 데 큰 도움이 됩니다. 위에서 설명한 방법들을 참고하여 여러분만의 효율적인 Nest.js 프로젝트를 구축해 보세요! 이를 통해 더욱 견고하고 확장 가능한 애플리케이션을 개발할 수 있을 것입니다.

728x90