generator-proyecto-nestjs-base

0.0.1 • Public • Published

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

  1. Ejecuta el Generador:

    Abre tu terminal y navega al directorio donde quieres crear el proyecto. Luego ejecuta:

    yo proyecto-nestjs-base
  2. 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.
  3. 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:

  1. Instala las Dependencias:

    Navega a la carpeta del proyecto generado y ejecuta:

    npm install
  2. 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 a http://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.

Package Sidebar

Install

npm i generator-proyecto-nestjs-base

Weekly Downloads

4

Version

0.0.1

License

Apache-2.0

Unpacked Size

713 kB

Total Files

102

Last publish

Collaborators

  • nflores_inova