Skip to content

20230709: Primeros pasos con NestJS

  • NestJS es un framework para NodeJS basado en ExpressJS.

Instalación

  • npm i -g @nestjs/cli

Nuevo proyecto

Desarrollando

  • `npm run test

  • npm run start:dev

  • En Windows, el linter puede molestar con respecto a que nuestros finales de línea terminen en CRLF en lugar de LF.

    • Para evitar esto, se puede agregar "endOfLine": "auto" en .prettierrc
  • .prettierrc

{
  "singleQuote": true,
  "trailingComma": "all",
  "endOfLine": "auto"
}

Swagger (API Docs)

ts
import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const config = new DocumentBuilder()
    .setTitle('Primeros Pasos')
    .setDescription('Saludando a todos')
    .setVersion('1.0')
    .addTag('helloworld')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('apidoc', app, document);

  await app.listen(3000);
}
bootstrap();

REPL

ts
import { repl } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  await repl(AppModule);
}
bootstrap();
  • npm run start -- --entryFile repl
help()
debug()
methods(AppService)
get(AppService).helloworld()
methods(AppController)
get(AppController).hello('Antonio')
.exit
  • Para facilitar, se puede agregar este script en el package.json:
    • "repl": "npm run start -- --entryFile repl"
  • npm run repl

Site estático

ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';

@Module({
  imports: [
    ServeStaticModule.forRoot({
      rootPath: join(__dirname, '..', 'client/dist'),
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
  • npm create vite@latest client

Proyecto personal