10 - Ejercicios prácticos y mini proyectos

Objetivo del tema

Pon en práctica los conceptos aprendidos construyendo proyectos pequeños con npm: levantar una API con Express, automatizar tareas con scripts, publicar una utilidad, coordinar dependencias en equipos y organizar módulos en workspaces.

10.1 Crear un proyecto simple con express usando npm

Este ejercicio crea una API básica con Express y configura scripts para iniciarla rápidamente.

mkdir api-basica
cd api-basica
npm init -y
npm install express
// src/index.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.json({ mensaje: 'Hola desde Express y npm' });
});

app.listen(3000, () => {
  console.log('Servidor escuchando en http://localhost:3000');
});

Actualiza package.json para usar node src/index.js en el script start y ejecuta npm start para probar.

10.2 Automatizar tareas con scripts (ej: correr servidor y tests)

Añade herramientas como nodemon para recarga automática y Jest para pruebas. Instálalas como dependencias de desarrollo.

npm install --save-dev nodemon jest
{
  "scripts": {
    "start": "node src/index.js",
    "dev": "nodemon src/index.js",
    "test": "jest",
    "lint": "eslint src"
  }
}

Ejecuta npm run dev para desarrollar con recarga automática y npm test para validar la lógica. Ajusta la configuración de Jest según tus necesidades.

10.3 Publicar un paquete de utilidad sencillo

Crea una función reutilizable (por ejemplo, formatear fechas) y publícala siguiendo el flujo del tema 8. Asegúrate de incluir pruebas y un README con ejemplos.

mkdir utilidad-fechas
cd utilidad-fechas
npm init -y
# Implementa la utilidad en index.js y escribe tests
npm login
npm publish --access public

Opcional: usa scopes privados (por ejemplo @tuusuario/utilidad-fechas) si necesitas agrupar paquetes relacionados.

10.4 Manejo de dependencias en un proyecto colaborativo

Simula el flujo de trabajo de un equipo controlando versiones y evitando conflictos:

  • Después de instalar nuevas dependencias, ejecuta npm test y npm audit antes de subir cambios.
  • Comparte package.json y package-lock.json en el repositorio y evita editar el lock manualmente.
  • En revisiones de código, verifica que los rangos de versión sean coherentes y utiliza npm install --omit=dev para preparar despliegues.
  • En entornos CI/CD ejecuta npm ci para instalaciones reproducibles y cachea ~/.npm para optimizar tiempos.

Documenta el proceso en el README del proyecto: comandos obligatorios, scripts disponibles y políticas de actualización.

10.5 Uso de workspaces para dividir un proyecto en módulos

Organiza un monorepo con workspaces para compartir utilidades entre una API y un front-end.

mkdir plataforma
cd plataforma
npm init -y
mkdir -p packages/api packages/web packages/shared
{
  "private": true,
  "workspaces": [
    "packages/api",
    "packages/web",
    "packages/shared"
  ]
}

En cada paquete crea su propio package.json y declara dependencias locales con "packages/shared": "workspace:*". Ejecuta npm install en la raíz para generar enlaces simbólicos y comparte scripts globales como npm run build --workspaces.

Resumen didáctico

Los ejercicios propuestos consolidan tus habilidades con npm: crear aplicaciones, automatizar procesos, publicar artefactos, colaborar de forma segura y escalar proyectos modularmente. Practícalos y ajusta los ejemplos a tus necesidades reales.