Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Server Node

Proyecto Node.js con TypeScript.

Comandos Utilizados

Inicialización del Proyecto

Para iniciar el proyecto con un package.json por defecto:

npm init -y

Instalación de Dependencias

Instalar TypeScript y herramientas de desarrollo:

npm install -D typescript ts-node @types/node

Configuración de TypeScript

Generar el archivo tsconfig.json por defecto:

4. Estructura de Directorios y Alias

El proyecto utiliza Alias de Importación (@/) para evitar rutas relativas largas (../../../).

  • @/ apunta a src/.
  • Ejemplo: import { User } from '@/features/users/users.model';

5. Scripts Disponibles

En el package.json se han configurado los siguientes scripts:

"scripts": {
 "build": "tsc",
 "start": "node dist/index.js",
 "dev": "ts-node src/index.ts"
}
  • npm run dev: Ejecuta el código fuente directamente (para desarrollo).
  • npm run build: Compila el código TypeScript a JavaScript en la carpeta dist.
  • npm start: Ejecuta el código compilado.
  • npx tsc --noEmit: Comprueba errores de TypeScript sin generar archivos (útil para validación).

Paso 2: Hot Reloading

Para desarrollo, se ha configurado nodemon para reiniciar automáticamente el servidor al detectar cambios en los archivos.

  1. Instalación de nodemon (ya incluido en devDependencies):
    npm install -D nodemon
  2. Configuración: Se ha creado el archivo nodemon.json y actualizado el script dev en package.json.
  3. Uso:
    npm run dev

Paso 3: Servidor Express y Variables de Entorno

Se ha integrado express como servidor web y dotenv para la gestión de variables de entorno.

  1. Instalación:

    npm install express dotenv
    npm install -D @types/express
    npm install express dotenv && npm install -D @types/express
  2. Configuración:

    • Crear un archivo .env en la raíz (basado en .env.example).
    • PORT=4000: Puerto del servidor.
    • NODE_ENV=development: Entorno (development/production).
    • CORS_ORIGIN=http://localhost:3000: Origen permitido para CORS.
  3. Ejecución: El servidor se iniciará en el puerto definido.

    Porbar con curl http://localhost:4000

Paso 4: Archivos Estáticos

Configuración para servir archivos estáticos (HTML, CSS, imágenes) desde la carpeta public.

  1. Código: Se ha añadido app.use(express.static('public')).
  2. Uso: Cualquier archivo en la carpeta public será accesible.

Paso 5: Refactorización MVC

Se ha reorganizado el proyecto en controllers y routes para mantener el código limpio.

  1. Modelos: src/models (Interfaces de TypeScript).
  2. Controladores: src/controllers (Lógica de negocio).
  3. Rutas: src/routes (Definición de endpoints).

Paso 6: CORS y Configuración de Puerto

Se ha configurado CORS para permitir peticiones desde el frontend y cambiado el puerto.

  1. Instalación:
    npm install cors
    npm install -D @types/cors
  2. Configuración:
    • Permitido origen: http://localhost:3000.

Paso 7: Módulo de Configuración "Professional"

Se ha centralizado la configuración con Tipado Fuerte (TypeScript).

  1. Tipos: src/config/types.ts define la interfaz obligatoria.
  2. Entornos:
    • development.ts: Configuración por defecto para desarrollo.
    • production.ts: Lee estrictamente de variables de entorno.
  3. Uso: src/index.ts importa config y olvida los detalles de process.env.

Paso 8: Scripts de NPM (Cross-Env)

Se han automatizado los entornos con comandos:

  • npm run dev: Desarrollo con Hot Reload (NODE_ENV=development).
  • npm start: Desarrollo compilado (NODE_ENV=development).
  • npm run start:prod: Producción (NODE_ENV=production).

Paso 9: Arquitectura de Errores y Validación

  1. Manejo de Errores Global:

    • src/middlewares/error.handler.ts: Captura errores.
    • Desarrollo: Muestra stack trace.
    • Producción: Mensaje genérico seguro.
  2. Validación de Datos (Zod):

    • src/middlewares/validation.middleware.ts: Valida requests.
    • users.schema.ts: Define reglas (ej. nombre obligatorio).
    • Si falla, devuelve HTTP 400 con detalles del error.

Paso 10: Tests Automatizados (Jest + Supertest)

Infraestructura de pruebas de integración para asegurar la calidad del código.

  • Comando: npm test
  • Tecnologías: jest, ts-jest, supertest.
  • Cobertura: Verifica endpoints (GET, POST, DELETE), códigos de estado (200, 201, 400, 404) y respuestas JSON.

Replicar el Proyecto desde Cero

Si quieres crear un proyecto nuevo e instalar las mismas dependencias manualmente:

Dependencias de Producción:

npm install cors dotenv express mongoose zod

Dependencias de Desarrollo:

npm install -D @types/cors @types/express @types/jest @types/mongoose @types/node @types/supertest cross-env jest mongodb-memory-server nodemon supertest ts-jest ts-node tsc-alias tsconfig-paths tsx typescript

About

API REST starter kit con Node.js, TypeScript, MongoDB, Express y Jest.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /