최신 언어 기능을 사용하기 때문에, 순수 자바스크립트로 사용하려면 Babel 컴파일러가 필요
TypeScript: 자바스크립트에 타입을 추가한 언어로 타입은 코드가 더 안전하고 오류가 적게 만들어줌
Babel: 최신 자바스크립트 코드를 구형 브라우저에서도 실행할 수 있게 변환해주는 도구
먼저 Node.js (버전 >= 16)이 설치되어 있어야 합니다.
Node.js: 서버에서 자바스크립트를 실행할 수 있게 해주는 환경입니다.
Nest CLI을 사용(권장)
$ npm i -g @nestjs/cli
$ nest new project-name
Typescript 의 strict 옵션은 --strict 추가
project-name
디렉토리 생성
노드 모듈과 몇 가지 다른 기본 파일들이 설치
src/
디렉토리가 생성되고 여러 핵심 파일들로 채워짐
src
├── app.controller.ts
(단일 경로를 가진 기본 컨트롤러)
├── app.controller.spec.ts
(컨트롤러의 단위 테스트)
├── app.module.ts
(애플리케이션의 루트 모듈)
├── app.service.ts
(단일 메서드를 가진 기본 서비스)
└── main.ts
(`NestFactory`를 사용하여 Nest 애플리케이션 인스턴스를 생성하는 엔트리 파일)
main.ts
는 우리의 애플리케이션을 부트스트랩하는 비동기 함수를 포함합니다:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
NestFactory
클래스로 App 인스턴스가 생성
create()
메서드는 INestApplication
인터페이스를 만족하는 애플리케이션 객체를 반환플랫폼 독립성을 지향하며, 재사용성 보장
기술적으로, 어댑터가 만들어지면 어떤 Node HTTP 프레임워크와도 함께 작업 가능
플랫폼 | 설명 |
---|---|
platform-express | Express는 Node를 위한 잘 알려진 간결한 웹 프레임워크입니다. 이는 테스트를 거친, 프로덕션 준비가 된 라이브러리로 많은 커뮤니티 자원이 구현되어 있습니다. @nestjs/platform-express 패키지가 기본적으로 사용됩니다. 많은 사용자가 Express로 충분히 만족할 수 있으며, 별도의 조치가 필요하지 않습니다. |
platform-fastify | Fastify는 최대 효율성과 속도를 제공하는 것을 목표로 하는 고성능, 저비용 프레임워크입니다. 사용하는 방법은 여기에서 읽어보세요. |
NestExpressApplication
OR NestFastifyApplication
NestFactory.create()
메서드에 타입을 전달하면, 해당 플랫폼에만 있는 메서드를 사용const app = await NestFactory.create<NestExpressApplication>(AppModule);
애플리케이션을 시작:
$ npm run start
개발 프로세스를 가속화하려면 (빌드 속도가 20배 빨라짐),
-b swc
플래그를start
스크립트에 전달하여 SWC 빌더를 사용:npm run start -- -b swc
파일의 변경을 감지하려면 다음 명령어를 사용하여 애플리케이션을 시작:
$ npm run start:dev
CLI 에는 린터와 포매터가 사전 설치
# eslint로 린트 및 자동 수정
$ npm run lint
# prettier로 포맷팅
$ npm run format