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.
- Node.js (versión 20 o superior)
- npm (versión 10 o superior)
- Yeoman
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
Para generar un nuevo proyecto NestJS, sigue estos pasos:
-
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.
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.
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.
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
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.
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.
-
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
-
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
-
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
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.
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
{
"username": "usertest",
"password": "123456"
}
Ambos parámetros son requeridos.
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>"
{
"refreshToken": "<REFRESH_TOKEN>"
}
El refreshToken
es requerido para generar un nuevo access_token
.
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).
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.