NestJS es un marco de trabajo de servidor eficiente, confiable y escalable para aplicaciones web basado en Node.js y TypeScript. NestJS utiliza principios de programación orientada a objetos, programación funcional y programación funcional reactiva. Fue diseñado para ayudar a los desarrolladores a crear aplicaciones de una manera sencilla y coherente, proporcionando un ecosistema de aplicación completo que incluye todo, desde el manejo de solicitudes HTTP hasta la abstracción de bases de datos.
La interfaz de línea de comandos (CLI) de NestJS es una herramienta poderosa que facilita el desarrollo y la organización de tu aplicación NestJS. La CLI puede crear esqueletos de los distintos componentes de tu aplicación, como módulos, servicios y controladores, entre otros.
Para instalar la CLI de NestJS globalmente en tu máquina, usa el siguiente comando en tu terminal:
npm i -g @nestjs/cli
Para crear una nueva aplicación, puedes usar el comando nest new
seguido del nombre de tu aplicación:
nest new my-nest-app
Esto creará un nuevo directorio con el nombre my-nest-app
, instalará todas las dependencias necesarias y configurará un esqueleto de aplicación básica.
La CLI de NestJS puede generar esqueletos de componentes como módulos, controladores y servicios. Por ejemplo, para generar un nuevo módulo, puedes usar el comando nest g module
seguido del nombre de tu módulo:
nest g module my-module
Para generar un controlador, puedes usar nest g controller
seguido del nombre de tu controlador:
nest g controller my-controller
Y para generar un servicio, puedes usar nest g service
seguido del nombre de tu servicio:
nest g service my-service
Si quieres generar un recurso CRUD completo (Controlador, Servicio, Módulo), puedes usar la opción resource
. Esto generará un conjunto de archivos preconfigurados para manejar operaciones CRUD básicas. Ejemplo:
nest g resource tasks
NestJS CLI no ofrece un comando incorporado para generar decoradores, pero puedes crearlos manualmente en su respectivo directorio. Aquí tienes un ejemplo de cómo podrías crear un decorador de usuario personalizado:
// user.decorator.ts
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const User = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
return request.user;
},
);
Puedes generar un guard con el comando guard
de la CLI de NestJS. Este comando creará un esqueleto básico de guardia. Ejemplo:
nest g guard tasks
Esto generará un archivo tasks.guard.ts
con un esqueleto básico de guardia.
// tasks.guard.ts
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable()
export class TasksGuard implements CanActivate {
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
return true;
}
}
Puedes personalizar este guard para implementar tu propia lógica de autorización.
Para iniciar tu aplicación, puedes usar el comando nest start
. Si quieres iniciar la aplicación en modo de desarrollo, puedes usar nest start --watch
.
nest start
- Utiliza la CLI para generar los esqueletos de tus componentes. Esto te asegurará que se sigan las mejores prácticas y la estructura correcta de los archivos.
- Utiliza la opción
--dry-run
cuando generes componentes si quieres ver qué archivos se crearán sin realmente crearlos. - Utiliza
nest start --watch
en desarrollo para habilitar la recarga en caliente de tu aplicación. - Explora todas las opciones de la CLI con el comando
nest --help
. La CLI de NestJS tiene muchas características útiles que pueden facilitar tu desarrollo. https://docs.nestjs.com/cli/overview