generator-proyecto-nestjs-base v0.0.1
Generador de Proyecto NestJS Base
Este generador crea una estructura básica para un proyecto NestJS, incluyendo la configuración inicial del pipeline, migraciones, pruebas y configuración de entorno.
Requisitos
- Node.js (versión 20 o superior)
- npm (versión 10 o superior)
- Yeoman
Instalación
Primero, asegúrate de tener Yeoman instalado. Si no lo tienes, puedes instalarlo globalmente con:
npm install -g yo
Luego, instala el generador de proyecto NestJS base:
npm install -g generator-proyecto-nestjs-base
Crear un Nuevo Proyecto
Para generar un nuevo proyecto NestJS, sigue estos pasos:
Uso Básico
Ejecuta el Generador:
Abre tu terminal y navega al directorio donde quieres crear el proyecto. Luego ejecuta:
yo proyecto-nestjs-base
Proporciona Información del Proyecto:
Durante la ejecución del generador, se te pedirá ingresar algunos detalles sobre tu proyecto:
- Nombre del Proyecto: Nombre del proyecto NestJS (ejemplo:
mi-proyecto-nestjs
). - Descripción del Proyecto: Una breve descripción del propósito del proyecto.
- Nombre del Proyecto: Nombre del proyecto NestJS (ejemplo:
Finalización:
Una vez completado el proceso, el generador creará la estructura del proyecto en la carpeta especificada.
Uso con Parámetros Opcionales
Puedes pasar parámetros opcionales directamente al ejecutar el generador, evitando así la necesidad de ingresar manualmente cada detalle durante la ejecución:
Nombre del Proyecto: Usa
--projectName
para especificar el nombre del proyecto.yo proyecto-nestjs-base --projectName="mi-proyecto-nestjs"
Descripción del Proyecto: Usa
--projectDescription
para especificar una descripción del proyecto.yo proyecto-nestjs-base --projectDescription="Este es un proyecto base de NestJS."
Ejemplo combinando ambos parámetros:
yo proyecto-nestjs-base --projectName="mi-proyecto-nestjs" --projectDescription="Este es un proyecto base de NestJS."
Al usar estos parámetros, el generador tomará los valores proporcionados sin solicitarte esa información durante su ejecución.
Configuración del Entorno
El proyecto NestJS utiliza un archivo .env
para definir los parámetros de entorno, incluyendo el puerto en el que se ejecutará la aplicación.
Archivo .env
El archivo .env
contendrá las configuraciones clave para tu proyecto. Un ejemplo básico del contenido de este archivo sería:
APP_PORT=3000
DATABASE_HOST=postgres://user:password@localhost:5432/mydatabase
JWT_SECRET=mysecretkey
Archivo .env.example
El proyecto generado incluye un archivo .env.example
que tiene los parámetros base necesarios para que puedas generar tu propio archivo .env
. Simplemente copia el contenido de .env.example
y crea un nuevo archivo .env
en la raíz de tu proyecto.
cp .env.example .env
Luego, asegúrate de ajustar las configuraciones según tus necesidades.
Comandos Post-Generación
Una vez que tu proyecto ha sido generado, sigue estos pasos para ponerlo en funcionamiento:
Instala las Dependencias:
Navega a la carpeta del proyecto generado y ejecuta:
npm install
Inicia la Aplicación:
Para iniciar la aplicación NestJS en modo desarrollo, ejecuta:
npm run start:dev
La aplicación se ejecutará en el puerto especificado en tu archivo
.env
. Por defecto, este puerto será3000
. Abre tu navegador y navega ahttp://localhost:3000
para ver tu nueva aplicación NestJS en acción.
Comandos de Scripts Disponibles
Comandos Generales
Compilar la aplicación:
npm run build
Formatear el código usando Prettier:
npm run format
Iniciar la aplicación en modo producción:
npm run start:prod
Comandos para Pruebas
Pruebas Unitarias:
npm run test
Cobertura de Pruebas:
npm run test:cov
Pruebas E2E:
npm run test:e2e
Pruebas en modo observación (watch mode):
npm run test:watch
Migraciones con TypeORM
Generar migraciones:
npm run migration:generate
Ejecutar migraciones:
npm run migration:run
Revertir migraciones:
npm run migration:revert
Mostrar el registro de migraciones:
npm run migration:log
Docker
Si deseas ejecutar la aplicación usando Docker, puedes hacerlo con el siguiente comando:
npm run docker:run
Este comando construirá la imagen de Docker y la ejecutará en un contenedor.
Estructura del Proyecto
El proyecto generado tendrá una estructura similar a la siguiente:
- dist
- src
- common
- decorators
- exception-filters
- guards
- interceptors
- interfaces
- middlewares
- pipes
- serializers
- utils
- core.module.ts
- shared.module.ts
- config
- database.config.ts
- migrations
- modules
- auth
- funcionalidades
- usuarios
- registros
- app.controller.ts
- app.module.ts
- app.service.ts
- main.ts
- test
Servicios Implementados:
Login
Parámetros de Entrada
{
"username": "usertest",
"password": "123456"
}
Ambos parámetros son requeridos.
Descripción
Recibe el nombre de usuario y la contraseña de la persona que quiere iniciar sesión. Si estos datos coinciden con los registros de la base de datos, el usuario podrá acceder al sistema. Retorna un JWT que es necesario para las siguientes solicitudes. Este JWT debe estar en el header Authorization
de las peticiones.
Ejemplo de solicitud usando curl
:
curl http://localhost:3000/profile -H "Authorization: Bearer <JWT>"
Refresh Token
Parámetros de Entrada
{
"refreshToken": "<REFRESH_TOKEN>"
}
El refreshToken
es requerido para generar un nuevo access_token
.
Descripción
Permite generar un nuevo access_token
a partir de un refresh_token
válido. El refresh_token
tiene una validez mayor (7 días) en comparación con el access_token
(24 horas).
Personalización
El generador utiliza plantillas que puedes personalizar según tus necesidades. Simplemente edita los archivos en el directorio de plantillas y vuelve a ejecutar el generador para ver los cambios reflejados en los nuevos proyectos.